DOM

DOM详解
1.1 DOM案例
0.显示二维码(导航栏,开关灯)
var a = document.getElementsByTagName(“a”)[0];
var er = document.getElementById(“er”);
a.onmouseover = function () {
er.className = ” show”;
}
a.onmouseout = function () {
er.className = ” hide”;
er.className = er.className.replace(“show”,”hide”);
}
1.禁用文本框和获取失去焦点输入事件。
2.表单处理。Input取值赋值和select选水果。

        var btn = document.getElementById("btn");
        var opArr = document.getElementsByTagName("option");

        btn.onclick = function () {
            opArr[3].selected = true;
        }

3.验证账号密码,高亮显示。
var inp1 = document.getElementsByTagName(“input”)[0];
var span1 = document.getElementsByTagName(“span”)[0];

    inp1.onblur = function () {
        if(this.value.length === 0){
            return;
        }
        if(this.value.length < 6 || this.value.length > 10){
            this.className = "wrong";
            span1.innerHTML = "您输入的内容必须为6-10位!"
        }else{
            this.className = "";
            span1.innerHTML = "";
        }
    }

4.全选反选
var theadInp = document.getElementById(“theadInp”);
var tbody = document.getElementById(“tbody”);
var inpArr = tbody.getElementsByTagName(“input”);

        theadInp.onclick = function () {
            for(var i=0;i<inpArr.length;i++){。
                if(true == this.checked){
                    inpArr[i].checked = true;
                }else{
                    inpArr[i].checked = false;
                }
            }
            for(var i=0;i<inpArr.length;i++){
                inpArr[i].checked = this.checked;
            }
        }

        for(var i=0;i<inpArr.length;i++){
           inpArr[i].onclick = function () {
                for(var j=0;j<inpArr.length;j++){
                    if(false === inpArr[j].checked){
                        theadInp.checked = false;
                        return;
                    }
                }
                theadInp.checked = true;
            }
        }

        for(var i=0;i<inpArr.length;i++){
            inpArr[i].onclick = function () {
                var flag = true;
                for(var j=0;j<inpArr.length;j++){
                    if(false === inpArr[j].checked){
                        flag = false;
                    }
                }
                theadInp.checked = flag;
            }
        }

1.2 属性获取修改和删除(属性绑定)
1.teb栏。(排他思想)(简单写法和兼容写法)
1.点亮盒子。
var liArr = document.getElementsByTagName(“li”);

        for(var i=0;i<liArr.length;i++){
            liArr[i].onmouseover = function () {
               排他思想:干掉所有人,剩下我自己。
                for(var j=0;j<liArr.length;j++){
                    liArr[j].className = "";
                }
                this.className = "current";
            }

        }

    2.弹出索引值。
        var liArr = document.getElementsByTagName("li");

        for(var i=0;i<liArr.length;i++){   

            liArr[i].aaaaa = i;
            liArr[i].index = i;
            liArr[i].onmouseover = function () {
                alert(this.aaaaa);
                alert(this.index);
            }
        }
        3.属性绑定。
        4.两个for循环变一个

2.自定义属性(兼容写法)
1.直接绑定属性:不会再标签中显示(没有的属性);
2.标签中的自定义属性,不能box.aaa获取
(火狐谷歌IE9+)(IE678可以获取)
3.get/setAttribute();可以
1.3 节点关系。(父节点、兄弟节点、子节点、所有子节点)
1.子节点。(京东头)
2.nodeType/nodeName/nodeValue:
元素/属性/文本 123/标签:属性名:#text/null:属性值:内容
3.childNodes实现各行变色index = 0;
4.父节点/所有子节点/兄弟节点
1.3.1 隔行变色

        var btn = document.getElementsByTagName("button")[0];
        var ul = btn.nextElementSibling;
        var liAndTextArr = ul.childNodes;

        btn.onclick = function () {               
            var arr = [];。
            for(var i=0;i<liAndTextArr.length;i++){
                if(liAndTextArr[i].nodeType === 1){
                    arr[arr.length] = liAndTextArr[i];
                }
            }
            //各行变色
            for(var j=0;j<arr.length;j++){
                if(j%2===1){
                    arr[j].style.backgroundColor = "red";
                }else{
                    arr[j].style.backgroundColor = "#ccc";
                }
            }
        }

nodeType与nodeName与nodeValue

//nodeType
console.log(“我是nodeType值”);
console.log(ele.nodeType);//1
console.log(att.nodeType);//2
console.log(txt.nodeType);//3
//nodeName
console.log(“我是nodeName值”);
console.log(ele.nodeName);//DIV
console.log(att.nodeName);//id
console.log(txt.nodeName);//#text
//nodeValue
console.log(“我是nodeValue值”);
console.log(ele.nodeValue);//null
console.log(att.nodeValue);//box
console.log(txt.nodeValue);//我是文本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值