请选择 进入手机版 | 继续访问电脑版
开启辅助访问
帐号登录 |立即注册

JavaScript知识点整理之获取元素和节点

 
本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了关于获取元素和节点的相关内容,包括了通过id、类名、name、标签名获取元素,创建、删除、克隆节点等问题,下面一起来看一下,希望对大家有帮助。

获取元素
  • 通过ID获取(getElementById
  • 通过name属性(getElementsByName
  • 通过标签名(getElementsByTagName
  • 通过类名(getElementsByClassName
  • 通过选择器获取一个元素(querySelector
  • 通过选择器获取一组元素(querySelectorAll
  • 获取html的方法(document.documentElement
  • 获取body的方法(document.body
1.通过ID获取(getElementById)
[JavaScript] 纯文本查看 复制代码
// 1 获取元素节点

    // 通过id的方式( 通过id查找元素,大小写敏感,如果有多个id只找到第一个)

    document.getElementById('p1');

  • 上下文必须是document。
  • 必须传参数,参数是string类型,是获取元素的id。
  • 返回值只获取到一个元素,没有找到返回null。
2.通过类名(getElementsByClassName)
[JavaScript] 纯文本查看 复制代码
// 通过类名查找元素,多个类名用空格分隔,得到一个HTMLCollection(一个元素集合,有length属性,可以通过索引号访问里面的某一个元素)

var cls = document.getElementsByClassName('a b');

console.log(cls);

  • 参数是元素的类名。
  • 返回值是一个类数组,没有找到返回空数组
3.通过name属性(getElementsByName)
[JavaScript] 纯文本查看 复制代码
// 通过name属性查找,返回一个NodeList(一个节点集合,有length属性,可以通过索引号访问)

  var nm =  document.getElementsByName('c');

   console.log(nm);

4.通过标签名(getElementsByTagName)
[JavaScript] 纯文本查看 复制代码
// 通过标签名查找元素 返回一个HTMLCollection

document.getElementsByTagName('p');

  • 参数是是获取元素的标签名属性,不区分大小写。
  • 返回值是一个类数组,没有找到返回空数组
5.通过选择器获取一个元素(querySelector)
[JavaScript] 纯文本查看 复制代码
document.querySelector('.animated')

  • 参数是选择器,如:”p .className”。
  • 返回单个node,如果有多个匹配元素就返回第一个
6.通过选择器获取一组元素(querySelectorAll)
[JavaScript] 纯文本查看 复制代码
document.querySelector('.animated')

  • 返回值是一个类数组
获取节点
在文档对象模型 (DOM) 中,每个节点都是一个对象。DOM 节点有三个重要的属性
1. nodeName : 节点的名称
2. nodeValue :节点的值
3. nodeType :节点的类型
一、nodeName 属性: 节点的名称,是只读的。
  • 元素节点的 nodeName 与标签名相同
  • 属性节点的 nodeName 是属性的名称
  • 文本节点的 nodeName 永远是 #text
  • 文档节点的 nodeName 永远是 #document
二、nodeValue 属性:节点的值
  • 元素节点的 nodeValue 是 undefined 或 null
  • 文本节点的 nodeValue 是文本自身
  • 属性节点的 nodeValue 是属性的值
三、nodeType 属性: 节点的类型,是只读的。以下常用的几种结点类型:
  • 元素类型 节点类型
  • 元素 1
  • 属性 2
  • 文本 3 空格也是返回3
  • 注释 8
  • 文档 9
创建节点:
1.创建节点:createElement('')
[JavaScript] 纯文本查看 复制代码
// 创建元素,只是创建出来并未添加到html中,需要与appendChild 配合使用

   var elem = document.createElement('p');

   elem.id = 'test';

   elem.style = 'color: red';

   elem.innerHTML = '我是新创建的节点';

   document.body.appendChild(elem);
2.插入节点:appendChild ()
  • 用法是: parent.appendChild(child)
  • 会将child节点添加到parent里的最后面
  • 如果子节点原本就存在,会移除原节点,添加新节点 到最后,但是事件会保留
    [JavaScript] 纯文本查看 复制代码
    var oNewp=document.createElement("p");
    
         var oText=document.createTextNode("World Hello");
    
         oNewp.appendChild(oText);

2-1.插入节点:insertBefore()
  • 用法是 parent.insertBefore(newNode,refNode);
    [JavaScript] 纯文本查看 复制代码
    var oOldp=document.body.getElementsByTagName("p")[0];
    
     document.body.insertBefore(oNewp,oOldp);

删除节点
1.删除节点:removeChild
  • 用法是:parent.removeChild(child)
  • 如果删除的不是父元素的子节点会报错
    [JavaScript] 纯文本查看 复制代码
    var op=document.body.getElementsByTagName("p")[0];
    
          op.parentNode.removeChild(op);

克隆节点
1.克隆节点:parent.cloneNode() false 或者true
  • 克隆节点(需要接受一个参数来表示是否复制元素)
    [JavaScript] 纯文本查看 复制代码
    // 克隆节点(需要接受一个参数来表示是否复制元素)
    
      var form =  document.getElementById('test');
    
      var clone = form.cloneNode(true);
    
      clone.id = 'test2';
    
      document.body.appendChild(clone);

替换节点
1.替换节点 方法node.replace(new,old)
[JavaScript] 纯文本查看 复制代码
var oOldp=document.body.getElementsByTagName("p")[0];

oOldp.parentNode.replaceChild(oNewp,oOldp);
文档碎片框
  • 作用:当向document中添加大量的节点时,如果逐个添加将会十分缓慢,这时可以使用文档碎片一次性添加到document中
  • 语法:document.createDocumentFragment();
  • 承载节点
    [JavaScript] 纯文本查看 复制代码
    (function()
       {
           var start = Date.now();
           var str = '', li;
           var ul = document.getElementById('ul');
           var fragment = document.createDocumentFragment();
           for(var i=0; i<10000; i++)
           {
               li = document.createElement('li');
               li.textContent = '第'+i+'个子节点';
               fragment.appendChild(li);
           }
           ul.appendChild(fragment);
           console.log('耗时:'+(Date.now()-start)+'毫秒'); // 63毫秒
       })();

以上就是本文的全部内容,感谢大家支持JScript之家——编程学习者社区!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则