javascript基础学习系列二百二十六:Attr类型

本文介绍了如何通过使用DocumentFragment避免在JavaScript中多次渲染列表,以提高性能。讲解了Attr类型节点的特性和如何创建、操作HTML和XML中的属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<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"为新属性设置 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值