document节点属性 方法

nodeName

document的nodeName

      console.log(document.nodeName);//#document
  <body>
    <div>
      <!-- 我是注释 -->
      <a href="">我是超链接</a>
      <p>我是段落</p>
      <h1>我是标题</h1>
    </div>
    <script>
      var div = document.getElementsByTagName('div')[0];
      console.log(div.nodeName); //DIV
    </script>
  </body>

在这里插入图片描述
nodeName是一个只读的属性

nodeValue

元素节点是没有nodeValue这个属性的

  <body>
    <div>
      我是文本节点
      <!-- 我是注释 -->
      <h1>我是标题</h1>
      <a href="">我是超链接</a>
      <p>我是段落</p>
    </div>
    <script>
      var div = document.getElementsByTagName('div')[0];
      console.log(div.firstChild.nodeValue);
      console.log(div.childNodes[1].nodeValue);
      console.log(div.childNodes[3].nodeValue);
    </script>
  </body>

在这里插入图片描述
获取属性节点的值

  <body>
    <div class="box" id="box" style="background-color: green">
      我是文本节点
      <!-- 我是注释 -->
      <h1>我是标题</h1>
      <a href="">我是超链接</a>
      <p>我是段落</p>
    </div>
    <script>
      var div = document.getElementsByTagName('div')[0];
      console.log(div.getAttributeNode('id'));
      console.log(div.getAttributeNode('id').nodeValue);
      console.log(div.getAttributeNode('id').value);
    </script>
  </body>

在这里插入图片描述
nodeValue是可写的

nodeType

nodeType是只读的

  <body>
    <div class="box" id="box" style="background-color: green">
      我是文本节点
      <!-- 我是注释 -->
      <h1>我是标题</h1>
      <a href="">我是超链接</a>
      <p>我是段落</p>
    </div>
    <script>
      var div = document.getElementsByTagName('div')[0];
      console.log(div.nodeType); //1
      console.log(div.getAttributeNode('id').nodeType); //2
      console.log(div.firstChild.nodeType); //3
      console.log(div.childNodes[1].nodeType); //8
    </script>
  </body>

封装childNodes为children

封装寻找子元素的方法

      function elemChildren(node) {
        var arr = [],
          children = node.childNodes;
        for (var i = 0; i < children.length; i++) {
          var childItem = children[i];
          if (childItem.nodeType === 1) {
            arr.push(childItem);
          }
        }
        return arr;
      }

用类数组的方法封装(1)

      function elemChildren(node) {
        var temp = {
            length: 0,
            push: Array.prototype.push,
            splice: Array.prototype.splice,
          },
          len = node.childNodes.length;
        for (var i = 0; i < len; i++) {
          var childItem = node.childNodes[i];
          if (childItem.nodeType === 1) {
            temp[temp['length']] = childItem;
            temp['length']++;
          }
        }
        return temp;
      }

用类数组的方法封装(2)

      function elemChildren(node) {
        var temp = {
            length: 0,
            push: Array.prototype.push,
            splice: Array.prototype.splice,
          },
          len = node.childNodes.length;
        for (var i = 0; i < len; i++) {
          var childItem = node.childNodes[i];
          if (childItem.nodeType === 1) {
            temp.push(childItem);
          }
        }
        return temp;
      }

attributes

元素的属性集合
可写的

  <body>
    <div class="box" id="box" style="background-color: green">
      我是文本节点
      <!-- 我是注释 -->
      <h1>我是标题</h1>
      <a href="">我是超链接</a>
      <p>我是段落</p>
    </div>
    <script>
      var div = document.getElementsByTagName('div')[0];
      console.log(div.attributes);
    </script>
  </body>

在这里插入图片描述

  <body>
    <div class="box" id="box" style="background-color: green">
      我是文本节点
      <!-- 我是注释 -->
      <h1>我是标题</h1>
      <a href="">我是超链接</a>
      <p>我是段落</p>
    </div>
    <script>
      var div = document.getElementsByTagName('div')[0];
      console.log(div.attributes[1].nodeValue);
      console.log(div.attributes[1].value);
      console.log(div.getAttributeNode('id').nodeValue);
      console.log(div.getAttributeNode('id').value);
    </script>
  </body>

在这里插入图片描述

hasChildNodes

判断一个元素是否有子节点的方法
返回boolean

  <body>
    <div>
		</div>
    <script>
      var div = document.getElementsByTagName('div')[0];
      console.log(div.hasChildNodes()); //true
    </script>
  </body>

换行之后就有文本节点 就返回true

  <body>
    <div></div>
    <script>
      var div = document.getElementsByTagName('div')[0];
      console.log(div.hasChildNodes()); //false
    </script>
  </body>

document

document继承的是HTMLDocument 并非直接继承Document
在这里插入图片描述
document 构造函数 -> HTMLDocument
HTMLDocument 构造函数 -> Document
在这里插入图片描述
在这里插入图片描述

  <body>
		<div>123</div>
    <script>
      var div = document.getElementsByTagName('div')[0];
      console.log(Object.prototype.toString.call(div));//[object HTMLDivElement]
    </script>
  </body>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_聪明勇敢有力气

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值