美文网首页
js 中的元素类型

js 中的元素类型

作者: 沧澈 | 来源:发表于2020-12-07 14:32 被阅读0次

    1.元素特性

    每个元素都有一或多个特性,这些特性的用途是给出相应元素或其内容的附加信息。操作特性的DOM方法主要有三个,分别是getAttribute()、setAttribute()和removeAttribute()。

    • getAttribute():取得特性的值
    var div = document.getElementById('myDiv');
    alert(div.getAttribute('id'));
    
    // 也可以获取自定义属性
    <div self-defined="hello"> </div>
    alert(div.getAttribute('self-defined'));
    
    • setAttribute():这个方法接受两个参数:要设置的特性名和值。如果特性已经存在,setAttribute()会以指定的值替换现有的值。
    div.setAttribute('id','demo')
    
    • removeAttribute():用于彻底删除元素的特性。

    2.Element类型

    特征:

    • nodeType的值为1;

    • nodeName的值为元素的标签名;

    • nodeValue的值为null;

    • parentNode可能是Document或Element;

    • 其子节点可能是Element、Text、Comment、ProcessingInstruction、CDATASection或EntityReference。

    Element类型是使用attributes属性的唯一一个DOM节点类型。attributes属性中包含一个NamedNodeMap,与NodeList类似,也是一个“动态”的集合。元素的每一个特性都由一个Attr节点表示,每个节点都保存在NamedNodeMap对象中。NamedNodeMap对象拥有下列方法。

    • getNamedItem(name):返回nodeName属性等于name的节点;

    • removeNamedItem(name):从列表中移除nodeName属性等于name的节点;

    • setNamedItem(node):向列表中添加节点,以节点的nodeName属性为索引;

    • item(pos):返回位于数字pos位置处的节点。

    var id = document.createAttributes.getNamedItem('id').nodeValue;
    
    简化
    
    var ele=document.createAttribute['id'].nodeValue;
    

    attributes属性中包含一系列节点,每个节点的nodeName就是特性的名称,而节点的nodeValue就是特性的值。

    • 创建元素
      document.createElement():创建新元素
    var  div=document.createElement(div');
    
    • 元素的子节点

    元素可以有任意数目的子节点和后代节点,因为元素可以是其他元素的子节点。元素的childNodes属性中包含了它的所有子节点,这些子节点有可能是元素、文本节点、注释或处理指令。

    <ul>
        <li></li>
        <li></li>
        <li></li>
    </ul>
    

    如果是IE来解析这些代码,那么<ul>元素会有3个子节点,分别是3个<li>元素。但如果是在其他浏览器中,<ul>元素都会有7个元素,包括3个<li>元素和4个文本节点(表示<li>元素之间的空白符)。

    这意味着在执行某项操作以前,通常都要先检查一下nodeTpye属性.

     for (let i = 0; i < ele.length; i++) {
          if (ele[i].nodeType == 1) {
                // 执行代码
          }
     }
    

    3. Text类型

    特征:

    • nodeType的值为3;

    • nodeName的值为"#text";

    • nodeValue的值为节点所包含的文本;❏

    • parentNode是一个Element;

    • 不支持(没有)子节点。

    文本节点由Text类型表示,包含的是可以照字面解释的纯文本内容。纯文本中可以包含转义后的HTML字符,但不能包含HTML代码。

    • appendData(text):将text添加到节点的末尾。

    • deleteData(offset, count):从offset指定的位置开始删除count个字符。

    • insertData(offset, text):在offset指定的位置插入text。

    • replaceData(offset, count, text):用text替换从offset指定的位置开始到offset+count为止处的文本。

    • splitText(offset):从offset指定的位置将当前文本节点分成两个文本节点。

    • substringData(offset, count):提取从offset指定的位置开始到offset+count为止处的字符串。

    除了这些方法之外,文本节点还有一个length属性,保存着节点中字符的数目。而且,nodeValue.length和data.length中也保存着同样的值。

    操作方法:

    • document.createTextNode():创建新文本节点,这个方法接受一个参数——要插入节点中的文本

    • normalize():如果在一个包含两个或多个文本节点的父元素上调用normalize()方法,则会将所有文本节点合并成一个节点,结果节点的nodeValue等于将合并前每个文本节点的nodeValue值拼接起来的值。

    -splitText():将一个文本节点分成两个文本节点,即按照指定的位置分割nodeValue值

    4.Comment类型

    特征:

    • nodeType的值为8;

    • nodeName的值为"#comment";

    • nodeValue的值是注释的内容;

    • parentNode可能是Document或Element;

    • 不支持(没有)子节点。

    Comment类型与Text类型继承自相同的基类,因此它拥有除splitText()之外的所有字符串操作方法。与Text类型相似,也可以通过nodeValue或data属性来取得注释的内容。

    • 注释节点可以通过其父节点来访问

    • document.createComment():并为其传递注释文本也可以创建注释节点

    相关文章

      网友评论

          本文标题:js 中的元素类型

          本文链接:https://www.haomeiwen.com/subject/zfszwktx.html