JavaScript - 3.子节点 + 兼容 + 循环控制

3 DOM的扩展

3.1父节点parentNode

// html
<ul>
    <li>苹果<a href="#">隐藏</a></li>
    <li>梨子<a href="#">隐藏</a></li>
    <li>香蕉<a href="#">隐藏</a></li>
    <li>菠萝<a href="#">隐藏</a></li>
</ul>

// js
var aTags = document.getElementsByTagName("a");
for(var i =0;i<aTags.length;i++){
      aTags[i].onclick=function () {
          this.parentNode.style.display="none";
          return false;
      }
}

3.2 浏览器兼容性的区别

// html
<ul id="test">
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>

// js
var test = document.getElementById("test");
alert(test.childNodes.length);  //chrome下结果为7,IE9以下结果为3
//在chrome下将空的文本节点,也算在内容
var test = document.getElementById("test");
var childs =test.childNodes;
for(key in childs){
   if(childs[key].nodeType==1){
        childs[key].style.background="red";
    }
}
子节点
◆ childNodes  // 所有节点,包含空文本节点,IE9 以下不包含文本节点
◆ children    // 所有子元素. IE都支持
◆ firstChild  // 第一个子节点 , 包含空文本 , IE9以下为元素节点不包括空文本节点
◆ firstElementChild  //  第一个子元素, IE9以下不支持
◆ lastChild  // 最后一个子节点 , 包含空文本, IE9以下为元素节点不包括空文本节点
◆ lastElementChild  // 最后一个子元素, IE9以下不支持

兄弟节点
◆ nextSibling // 下一个兄弟节点 , 包含空文本 , IE9 以下不包含空文本节点
◆ nextElementSibling  // 下一个兄弟元素 , IE9以下不支持
◆ previousSibling // 上一个兄弟节点 , 包含空文本 , IE9 以下不包含空文本节点
◆ previousElementSibling  // 上一个兄弟元素 , IE9以下不支持

3.3 用 document.all 解决浏览器兼容性问题

// 语法 ( document.all 为IE提供的方法,当在IE下运行时)
if(document.all){
    //IE下
}else{
    //其他浏览器下
}

// html
<ul id="test">
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>

// js
<script>
    var test = document.getElementById("test");
    if(document.all){
        test.firstChild.style.background="pink"
    }else{
        test.firstElementChild.style.background="pink"
    }
</script>

3.4 获取元素的位置信息

offsetParent  //获取给了定位元素的父级
offsetLeft      //返回元素的水平偏移位置。
offsetTop      //返回元素的垂直偏移位置。
offsetWidth  //返回元素的宽度
offsetHeight //返回元素的高度

javascript 的 offset、client、scroll 使用方法详解

3.5 控制语句的 中断(break) 和 跳过(continue) 方法

◆ break  //中断循环
for(var i=0;i<6;i++){
        console.log(i);
        if(i==5){
            break;
        }
    }
◆ continue  //跳过继续循环
for(var i=0;i<6;i++){
        if(i==2){
            continue
        }
        console.log(i);
    }

3.6 函数的传参( 不定参arguments )

// 参数的个数可变,参数以数组形式写入
// 对传入的参数求和
function sum(){
        var result=0;
        for(var i = 0;i<arguments.length;i++){
            result+=arguments[i];
        }
        return result;
}
alert(sum(2,3))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容