博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js高级程序设计--DOM
阅读量:4357 次
发布时间:2019-06-07

本文共 3090 字,大约阅读时间需要 10 分钟。

//将NodeList转换为数组

function convertToArray(nodes) {
var array = null;
try {
array = Array.prototype.slice.call(nodes, 0); //for standard DOM browser
} catch (ex) {
//for IE DOM based in COM
array = [];
for (var i = 0, len = nodes.length; i < len; i++) {
array.push(nodes[i]);
}
}
return array;
}

//判断第一个节点或者最后一个节点

if (someNode.nextSibling === null) {
console.log("Last node in the parent's childNodes list");
} else if (someNode.previousSibling === null) {
console.log("first node in the parents's childNodes list");
}

//迭代元素的每一个特性

function outputAttribute(element) {
var pairs = [];
for (var i = 0, len = element.attributes.length; i < len; i++) {
var attrName = element.attributes[i].nodeName;
var attrValue = element.attributes[i].nodeValue;
//ie7及更早的版本会返回HTML元素中所有可能的特性
//每个通过setAttribute()方法设置了的特性的specified属性斗会返回true
if(element.attributes[i].specified){
pairs.push(attrName + "=\"" + attrValue + "\"");
}
}
return pairs.join(" ");
}

/**

* 操作DOM
* parentObj.appendChild(newNode)
* parentObj.insertBefore(newNode,targetNode)
* parentObj.replaceChild(newNode,targetNode)
* parentObj.removeChild(targetNode)
* somdeNode.cloneNode([true]); //true为深复制
* normalize() //处理文档书中的文本节点,规范化文本节点
*
* childNodes属性
* firstChild
* lastChild
* ParentNode
* previousSibling
* nextSibling
*
* 查找元素
* document.getELementById()
* document.getElementsByTagName()
*
* 操作特性
* getAttribute()
* setAttribute()
* removeAttribute()
*
*添加
* document.createElement()
* document.createTextNode()
* document.createAttribute()
*
* 分割文本节点
* soneNode.firstChild[lastChild].spliteText(index)
*
*
*/

//使用文档片段,避免浏览器反复渲染

var fragment=document.createDocumentFragment();
var ul=document.getElementById("myList");
var li=null;
for(var i=0;i<3;i++){
li=document.createElement("li");
li.appendChild(document.createTextNode("item"+(i+1)));
fragment.appendChild(li);
}
ul.appendChild(fragment);

//检测浏览器呈现模式

if(document.compatMode=="CSS1Compat"){
alert("Standards mode");
} else {
alert("Quirks mode");
}

//点击链接滚动到某个元素视图

var links=document.getElementsByTagName("a");
var divs=document.getElementsByTagName("div");
for(var i= 0,len=links.length;i<len;i++){
links[i].index=i;
links[i].οnclick=function(event){
divs[this.index].scrollIntoView(true); //scrollIntoViewIfNeeded()
event.preventDefault();
};
}

//跨浏览器一个元素是否包含另一个元素

function contains(refNode,otherNode){
if(typeof refNode.contains=="function" && (!client.engine.webkit || client.engine.webkit>=522)){
//for standard
return refNode.contains(otherNode);
} else if (typeof refNode.compareDocumentPosition=="function"){
return !!(refNode.compareDocumentPosition(otherNode)&16);
} else {
var node=otherNode.parentNode;
do {
if(node===refNode){
return true;
} else {
node=node.parentNode;
}
} while(node!==null);
return false;
}
}

//跨浏览器实现获取文本和设置文本属性

function getInnerText(element){
return (typeof element.textContent=="string")?element.textContent:element.innerText;
}
function setInnerText(element,text){
if(typeof element.textContent=="string"){
element.textContent=text;
} else {
element.innerText=text;
}
}

转载于:https://www.cnblogs.com/webFrontDev/archive/2012/11/04/2753495.html

你可能感兴趣的文章
transitionFromView方法的使用
查看>>
Differences between page and segment
查看>>
Jdk与Tomcat配置与安装
查看>>
关于一个Java web与JFrame的深度结合
查看>>
VB连数据库conn.open的参数
查看>>
《信息安全系统设计基础》实验三
查看>>
SpringBoot Docs
查看>>
解决sublime text 2总是在新窗口中打开文件(标签中打开)
查看>>
VUE AntDesign DatePicker设置默认显示当前日期
查看>>
WIN32窗口模板
查看>>
859. Buddy Strings - LeetCode
查看>>
[置顶] 关键字弹出动画
查看>>
支付宝api指南
查看>>
二叉树的广度优先遍历、深度优先遍历的递归和非递归实现方式
查看>>
docker-compose部署kafka
查看>>
IOS中NSUserDefaults的用法(轻量级本地数据存储)
查看>>
cms项目技术心得!
查看>>
Django模板系统
查看>>
位(Bit)与字节(Byte)
查看>>
关于两次指针(struct型)传参数的问题
查看>>