// 代碼
document.getElementById('rb').checked = true;
// 結果:介面勾選生效,但「檢查元素」/「原始碼」均無 checked 屬性
| 維度 | Property (DOM 物件屬性) | Attribute (HTML 特性) |
|---|---|---|
| 儲存位置 | JS 物件記憶體 | HTML 標籤字串 |
| 同步性 | 即時生效,不寫入 HTML | 寫入 HTML,初始化時同步到 Property |
| 操作方法 | elem.checked = true | elem.setAttribute('checked', '') |
| 檢查元素可見度 | 不可見 (僅在 Properties 面板) | 可見 (Elements 面板) |
| 表單提交影響 | 影響 (瀏覽器讀 Property) | 不直接影響 |
效能:直接修改記憶體布林值,無需解析/序列化 HTML 字串。checked、disabled、selected、value 等均為布林/值類 Property。
outerHTML 序列化表單狀態。input[checked] (極少見)。function setChecked(element, isChecked) {
// 1. 更新 Property (即時生效)
element.checked = isChecked;
// 2. 同步 Attribute (可選,視需求)
if (isChecked) {
element.setAttribute('checked', '');
} else {
element.removeAttribute('checked');
}
}
// jQuery 寫法 (自動處理雙向)
$('#rb').prop('checked', true); // Property (推薦)
$('#rb').attr('checked', 'checked'); // Attribute
「對於
checked、selected、disabled、readonly、value等布林/值屬性,永遠使用.prop()。」