码迷,mamicode.com
首页 > 其他好文 > 详细

05.DOM

时间:2016-11-03 18:54:12      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:create   str   ffffff   pen   out   nload   条件   idt   兄弟节点   

DOM基础
什么是DOM 标签元素节点
浏览器支持情况  火狐支持最好 谷歌其次 ie最差 尤其是ie6-8
DOM节点
节点分为:元素节点和文本节点 测试节点的类型用nodeType
nodeType 为3时是文本节点
nodeType 为1时是元素节点
childNodes 节点 不兼容要做判断 一般用children

children子节点只算第一层

parentNode父节点

技术分享
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<script>
window.onload=function ()
{
    var aA=document.getElementsByTagName(a);
    
    for(var i=0;i<aA.length;i++)
    {
        aA[i].onclick=function ()
        {
            this.parentNode.style.display=none;
        };
    }
};
</script>
</head>

<body>
<ul id="ul1">
    <li>dfasdf <a href="javascript:;">隐藏</a></li>
    <li>45346 <a href="javascript:;">隐藏</a></li>
    <li>fghfgcvn <a href="javascript:;">隐藏</a></li>
    <li>vcbxcvbc <a href="javascript:;">隐藏</a></li>
    <li>757465867 <a href="javascript:;">隐藏</a></li>
</ul>
</body>
</html>
View Code

offsetParent
获取对应定位的父元素

技术分享
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style>
#div1 {width:200px; height:200px; background:#CCC; margin:100px; }
#div2 {width:100px; height:100px; background:red; position:absolute; left:50px; top:50px;}
</style>
<script>
window.onload=function ()
{
    var oDiv2=document.getElementById(div2);
    
    alert(oDiv2.offsetParent);//弹出的是object HTMLBodyElement 因为div1没有设置相对定位,所以div2是相对body定位的
};
</script>
</head>

<body>
<div id="div1">
    <div id="div2"></div>
</div>
</body>
</html>
View Code

首尾子节点  有兼容性问题
firstChild、firstElementChild
lastChild 、lastElementChild
兄弟节点    有兼容性问题
nextSibling、nextElementSibling
previousSibling、previousElementSibling

 

<script>
window.onload=function ()
{
    var oUl=document.getElementById(ul1);
    
    //IE6-8
    //oUl.firstChild.style.background=‘red‘;
    
    //高级浏览器
    //oUl.firstElementChild.style.background=‘red‘;
    
    if(oUl.firstElementChild)
    {
        oUl.firstElementChild.style.background=red;
    }
    else
    {
        oUl.firstChild.style.background=red;
    }
};
</script>
<ul id="ul1">
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>

 

元素属性操作
第一种:oDiv.style.display=“block”;
第二种:oDiv.style[“display”]=“block”;
第三种:Dom方式

DOM方式操作元素属性
获取:getAttribute(名称)
设置:setAttribute(名称, 值)
删除:removeAttribute(名称)

<script>
window.onload=function ()
{
    var oTxt=document.getElementById(txt1);
    var oBtn=document.getElementById(btn1);    
    oBtn.onclick=function ()
    {
        //oTxt.value=‘123‘;
        //oTxt[‘value‘]=‘123‘;        
        oTxt.setAttribute(value, 123);
    };
};
</script>
<input id="txt1" type="text" />
<input id="btn1" type="button" value="按钮" />

用className选择元素
如何用className选择元素
选出所有元素
通过className条件筛选
封装成函数

技术分享
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<script>
function getByClass(oParent, sClass)
{
    var aResult=[];
    var aEle=oParent.getElementsByTagName(*);
    
    for(var i=0;i<aEle.length;i++)
    {
        if(aEle[i].className==sClass)//找到所有要找的class
        {
            aResult.push(aEle[i]);//放进数组里
        }
    }
    
    return aResult;
}

window.onload=function ()
{
    var oUl=document.getElementById(ul1);
    var aBox=getByClass(oUl, box);
    
    for(var i=0;i<aBox.length;i++)
    {
        aBox[i].style.background=red;
    }
};
</script>
</head>

<body>
<ul id="ul1">
    <li class="box"></li>
    <li class="box"></li>
    <li></li>
    <li></li>
    <li></li>
    <li class="box"></li>
    <li></li>
</ul>
</body>
</html>
View Code

 创建、插入和删除元素

createElement(标签名) 创建一个节点
appendChild(节点) 追加一个节点

插入元素 insertBefore(节点, 原有节点) 在已有元素前插入
例子:倒序插入li
删除DOM元素
removeChild(节点) 删除一个节点 例子:删除li

技术分享
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<script>
window.onload=function ()
{
    var aA=document.getElementsByTagName(a);
    var oUl=document.getElementById(ul1);
    
    for(var i=0;i<aA.length;i++)
    {
        aA[i].onclick=function ()
        {
            oUl.removeChild(this.parentNode);
        };
    }
};
</script>
</head>

<body>
<ul id="ul1">
    <li>asfasd <a href="javascript:;">删除</a></li>
    <li>5645 <a href="javascript:;">删除</a></li>
    <li>ghdfjgj <a href="javascript:;">删除</a></li>
    <li>mvbnmvnb <a href="javascript:;">删除</a></li>
</ul>
</body>
</html>
View Code

 串联例子

技术分享
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<script>
window.onload=function ()
{
    var oBtn=document.getElementById(btn1);
    var oUl=document.getElementById(ul1);
    var oTxt=document.getElementById(txt1);
    
    oBtn.onclick=function ()
    {
        var oLi=document.createElement(li);//创建li
        var aLi=oUl.getElementsByTagName(li);
        
        oLi.innerHTML=oTxt.value;
        
        //父级.appendChild(子节点);
        //oUl.appendChild(oLi);
        if(aLi.length>0)//判断存不存在第一个节点
        {
            oUl.insertBefore(oLi, aLi[0]);//存在插入之前元素的 前面
        }
        else
        {
            oUl.appendChild(oLi);//不存在直接插入父元素
        }
    };
};
</script>
</head>

<body>
<input id="txt1" type="text"/>
<input id="btn1" type="button" value="创建li"/>
<ul id="ul1">
</ul>
</body>
</html>
View Code

 

文档碎片 文档碎片可以提高DOM操作性能(理论上) 文档碎片原理 document.createDocumentFragment()

技术分享
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<script>
window.onload=function ()
{
    var oUl=document.getElementById(ul1);
    var oFrag=document.createDocumentFragment();
    
    for(var i=0;i<10000;i++)
    {
        var oLi=document.createElement(li);
        
        oFrag.appendChild(oLi);
    }
    
    oUl.appendChild(oFrag);
};
</script>
</head>

<body>
<ul id="ul1">
</ul>
</body>
</html>
View Code

 



 




 

05.DOM

标签:create   str   ffffff   pen   out   nload   条件   idt   兄弟节点   

原文地址:http://www.cnblogs.com/Xuman0927/p/6027420.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!