本篇文章给大家带来了关于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毫秒
})();
|