js Attr类型

时间:2024-01-24 10:30:58
<ul id="myList"></ul>

假设想给这个

  • 元素添加 3 个列表项。如果分 3 次给这个元素添加列表项,浏览器就要重新渲染 3 次页面,以反映新添加的内容。为避免多次渲染,下面的代码示例使用文档片段创建了所有列表项, 然后一次性将它们添加到了
  • 元素:
  • let fragment = document.createDocumentFragment();
        let ul = document.getElementById("myList");
    
     for (let i = 0; i < 3; ++i) { 3 let li = document.createElement("li");
    li.appendChild(document.createTextNode(`Item ${i + 1}`));
    fragment.appendChild(li);
     }
        ul.appendChild(fragment);
  • 这个例子先创建了一个文档片段,然后取得了

  • 元素的引用。接着通过 for 循环创建了 3 个列表 项,每一项都包含表明自己身份的文本。为此先创建
  • 元素,再创建文本节点并添加到该元素。然后 通过 appendChild()把
  • 元素添加到文档片段。循环结束后,通过把文档片段传给 appendChild() 将所有列表项添加到了
  • 元素。此时,文档片段的子节点全部被转移到了
  • 元素。
  • Attr类型

  • 元素数据在 DOM 中通过 Attr 类型表示。Attr 类型构造函数和原型在所有浏览器中都可以直接访 7 问。技术上讲,属性是存在于元素 attributes 属性中的节点。Attr 节点具有以下特征:  nodeType 等于 2;  nodeName 值为属性名; 8  nodeValue 值为属性值;  parentNode 值为 null;  在 HTML 中不支持子节点;  在 XML 中子节点可以是 Text 或 EntityReference。 属性节点尽管是节点,却不被认为是 DOM 文档树的一部分。Attr 节点很少直接被引用,通常开 发者更喜欢使用 getAttribute()、removeAttribute()和 setAttribute()方法操作属性。 Attr 对象上有 3 个属性:name、value 和 specified。其中,name 包含属性名(与 nodeName 一样),value 包含属性值(与 nodeValue 一样),而 specified 是一个布尔值,表示属性使用的是 默认值还是被指定的值。 可以使用 document.createAttribute()方法创建新的 Attr 节点,参数为属性名。比如,要给 元素添加 align 属性,可以使用下列代码:

  • let attr = document.createAttribute("align");
        attr.value = "left";
        element.setAttributeNode(attr);
    alert(element.attributes["align"].value); alert(element.getAttributeNode("align").value); // "left" alert(element.getAttribute("align")); // "left"
  • // "left" 在这个例子中,首先创建了一个新属性。调用 createAttribute()并传入"align"为新属性设置 .