快速了解JavaScript的DOM模型( 三 )

  • item(pos):返回位于数字pos位置处的节点 。
  • attributes属性包含一系列节点,在节点中节点名称-nodeName 节点值-nodeValue 。
    var id = element.attributes.getNamedItem('id').nodeValue;// 方括号语法var id = element.attributes['id'].nodeValue;// 属性名引用var id = element.attributes.id;// 如果知道特性名所在的下标,也可以使用下标引用,假设id特性名所在下标为0.var id = element.attributes[0];而removeNamedItem()方法与removeAttribute()方法都是将给定名称的特性删除,唯一区别就是removeAttribute()没有返回值,removeNamedItem()返回被删除特性的Attr节点 。
    var oldAttr = element.attributes.removeNamedItem('id');setNamedItem()方法为Element添加一个新特性:
    element.attributes.setNamedItem(newAttr);一般情况下getAttribute()、removeAttribute()和setAttribute()方法就够使用了,但想要遍历元素的特性,attributes属性倒是比较方便 。下面展示如果迭代元素中每一个特性并将它们以name="value" name="value"这样的字符串格式 。
    function listAttributes(element) {var pairs = new Array(),attrName,attrValue,i,len;if (element.hasAttributes()) {var attrs = element.attributes;for (i = 0, len = element.attributes.length; i < len; i++) {attrName = attrs[i].nodeName;attrValue = https://www.isolves.com/it/cxkf/yy/js/2021-11-16/attrs[i].nodeValue;pairs.push(attrName + "="" + attrValue + """);}}return pairs.join(" ");}classListclassName属性用于操作类名,但className是一个字符串,修改后要设置整个字符串的值 。
    HTML5扩展了classList属性实现类名的操作 。该属性返回DOMTokenList集合 。定义了几个方法:
    • add(value):添加字符串到列表中 。如果存在就不添加 。
    • contains(value):指定值是否存在于列表中,存在则为true,否则为false 。
    • remove(value):从列表中删除指定值 。
    • toggle(value):列表中存在指定值,删除它;没有给定值,添加它 。
    AttrAttr类型在DOM表示元素特性 。特性是位于元素attributes属性中的节点 。具有下列特征:
    • nodeType为Node.TEXT_NODE,值为3 。
    • nodeName的值是特性的名称 。
    • nodeValue的值是特性的名称 。
    • parentNode的值为null 。
    • 在HTML中不支持子节点(没有子节点) 。
    • 在XML中子节点可以是Text或EntityReference 。
    特性节点不被认为是DOM文档树的一部分 。最常使用getAttrubute()、setAttribute()和removeAttribute()方法,很少直接引用特性节点 。
    Attr对象有3个属性:
    • name,特性名称,与nodeName的值相同 。
    • value,特性值,与nodeValue的值相同 。
    • specified,布尔值,用于区分特性在代码中是指定的还是默认的 。
    如果要为元素添加特性,可以使用document.createAttribute(localName)方法,创建名为localName的特性节点 。例如,要为元素添加align特性,可以使用下列代码:
    var attr = document.createAttribute("align");attr.value = https://www.isolves.com/it/cxkf/yy/js/2021-11-16/"left";element.setAttributeNode(attr);alert(element.attributes["align"].value); //"left"alert(element.getAttributeNode("align").value); //"left"alert(element.getAttribute("align")); //"left"Text文本节点由Text类型表示,包含的是可以照字面解释的纯文本内容 。纯文本中可以包含转义后的HTML字符,但不能包含HTML代码 。Text节点具有以下特征:
    • nodeType为Node.TEXT_NODE,值为3 。
    • nodeName的值为#text 。
    • nodeValue的值为节点所包含的文本 。
    • parentNode是一个Element 。
    • 不支持子节点(没有子节点) 。
    可以通过nodeValue属性或data属性访问Text节点中包含的文本,这两个属性中包含的值相同 。对nodeValue的修改也会通过data反映出来,反之亦然 。使用下列方法可以操作节点中的文本 。