js DOM(二)获取元素的方式、innerText、textContent、innerHTML、自定义属性

录:

    1.案例:阻止超链接默认跳转行为
    2.案例:相册
    3.案例:列表隔行变色
    4.案例:列表鼠标进入高亮显示(鼠标进入和鼠标移出事件)
    5.显示和隐藏二维码
    6.通过name属性获取元素(表单标签才有那么属性)
    7.根据类样式的名字获取元素
    8.其他获取元素的方式
    9.案例:div的高亮显示(鼠标进入边框高亮)
    10.案例:模拟搜索框(获取焦点和失去焦点)
    11.封装innerText和textContent
    12.innerText和innerHTML的区别
    13.自定义属性
    14.案例:tab切换

1.案例:阻止超链接默认跳转行为    <--返回目录

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>标题</title>
</head>
<body>
<!-- 阻止超链接默认跳转行为,第一种写法-->
<a href="http://www.baidu.com" onclick="return false;">百度</a><br/>

<!-- 阻止超链接默认跳转行为,第二种写法-->
<a href="http://www.baidu.com" onclick="return fun();">百度</a>
<script type="text/javascript">
    function fun(){
        return false;
    };
</script>
</body>
</html>

2.案例:相册    <--返回目录

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>标题</title>
    <style type="">
        ul li{
            list-style: none;
            float: left;    /*将li元素拖出*/
        }
        ul li a{
            //display: inline-block;
            text-decoration: none; /*去除a标签下划线样式*/
        }
        ul li a img{
             160px;
            height: 180px;
        }
    </style>
</head>
<body>
<h2>画廊</h2>
<ul id="imagegallery">
    <li><a href="images/1.jpg" title="图片1"><img src="images/1-small.jpg"></a></li>    
    <li><a href="images/2.jpg" title="图片2"><img src="images/2-small.jpg"></a></li>    
    <li><a href="images/3.jpg" title="图片3"><img src="images/3-small.jpg"></a></li>    
    <li><a href="images/4.jpg" title="图片4"><img src="images/4-small.jpg"></a></li>    
    <!-- 清除浮动 -->
    <div style="clear:both;"/> 
</ul>
<div><img src="" id="imgId"/></div>

<script type="text/javascript">
    var aEles = document.getElementsByTagName("a");
    for(var i=0;i<aEles.length;i++){
        aEles[i].onclick=function(){
            document.getElementById("imgId").src=this.href;
            return false;//禁止a标签的默认跳转行为
        };
    }
</script>
</body>
</html>

3.案例:列表隔行变色    <--返回目录

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>标题</title>
</head>
<body>
<input type="button" id="btn" value="点我,列表隔行变色"/>
<div style=" 300px">
<ul id="ulId">
    <li>红楼梦</li>
    <li>三国演义</li>
    <li>水浒传</li>
    <li>西游记</li>
</ul>
</div>
<script type="text/javascript">
    var eles = document.getElementById("ulId").getElementsByTagName("li");
    document.getElementById("btn").onclick=function(){
        for(var i=0;i<eles.length;i++){
            if(i%2==0){
                eles[i].style.backgroundColor="#ddd";
            }else{
                eles[i].style.backgroundColor="#aaa";
            }
        }
    };
</script>
</body>
</html>

4.案例:列表鼠标进入高亮显示(鼠标进入和鼠标移出事件)    <--返回目录

  鼠标进入时间onmouseover
  鼠标移出事件onmouseout

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>标题</title>
</head>
<body>
<div style=" 300px">
<ul id="ulId">
    <li>红楼梦</li>
    <li>三国演义</li>
    <li>水浒传</li>
    <li>西游记</li>
</ul>
</div>
<script type="text/javascript">
    var eles = document.getElementById("ulId").getElementsByTagName("li");
    for(var i=0;i<eles.length;i++){
        eles[i].onmouseover=function(){
            this.style.backgroundColor="pink";
        };
        eles[i].onmouseout=function(){
            this.style.backgroundColor="";
        };
    }
</script>
</body>
</html>    

5.显示和隐藏二维码    <--返回目录
  需要用到的知识:
        - 鼠标进入和鼠标移出事件
        - 使用类样式class进行显示或隐藏
        - 鼠标进入小二维码时,大二维码显示,鼠标移出时,二维码隐藏。

6.通过name属性获取元素(表单标签才有这个属性)    <--返回目录
    * getElementsByName("name属性的属性值")
        
7.根据类样式的名字获取元素    <--返回目录
    *  getElementsByClassName("类样式class的属性值")
        
8.其他获取元素的方式    <--返回目录
    * 根据id选择器/类别选择器获取元素
     <input type="button" id="btn" class="red"/>
     var ele = document.querySelector("#btn");
     var ele = document.querySelector(".red");
     var ele = document.querySelector("li");//只会获取第一个li标签
    
    * 根据class类别选择器/标签选择器获取元素
     var eles = document.querySelectorAll(".cls");    
     var eles = document.querySelectorAll("li");

9.案例:div的高亮显示(鼠标进入边框高亮)    <--返回目录

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>标题</title>
    <style type="text/css">
        div{
             200px;
            height: 150px;
            background-color: blue;
            border: 10px solid blue;/*设置border的颜色为背景色blue*/
            float: left;
            margin-left: 10px;
        }
    </style>
</head>
<body>
<div></div>
<div></div>
<div></div>
<script type="text/javascript">
    var eles = document.getElementsByTagName("div");
    for(var i=0;i<eles.length;i++){
        eles[i].onmouseover=function(){
            this.style.border="10px solid pink";  //将原来设置的border的颜色由背景色blue变成pink
        };
        eles[i].onmouseout=function(){
            this.style.border="";//将border的颜色恢复为背景色
        };
    }
</script>
</body>
</html>

10.案例:模拟搜索框(获取焦点和失去焦点)    <--返回目录

  获取焦点事件onfocus
  失去焦点事件onblur

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>标题</title>
    <style type="text/css">
        input{
            color: #aaa;
        }
    </style>
</head>
<body>
<input type="text" id="txt" value="请输入"/>
<script type="text/javascript">
    var ele = document.getElementById("txt");
    //注册获取焦点事件
    ele.onfocus=function(){
        if(this.value=="请输入"){
            this.value="";
            this.style.color="black";
        }
    };
    //注册失去焦点事件
    ele.onblur=function(){
        if(this.value.length==0){
            this.value="请输入";
            this.style.color="#aaa";
        }
    };
</script>
</body>
</html>

11.封装innerText和textContent    <--返回目录

  兼容代码

//设置任意的标签中间的任意文本内容
function setInnerText(element,text){
    if(typeof element.textContent == "undefined"){
        element.innerText=text;
    }else{
        element.textContent=text;
    }
}
//获取任意标签中间的文本内容
function getInnerText(element){
    if(typeof element.textContent=="undefined"){
        return element.innerText;
    }else{
        return element.textContent;
    }
}

12.innerText和innerHTML的区别    <--返回目录
    * 设置
        - document.getElementById("divId").innerText="<p>文本</p>";
            ** <p>文本</p>被当成纯文本
        - document.getElementById("divId").innerHTML="<p>文本</p>";
            ** <p>文本</p>被当成HTML代码

    * 获取
        - innerText可以获取标签中间的文本内容,但是标签中如果还有标签,那么最里面的标签的文本内容也能获取
        - innerHTML获取标签中间的【html代码内容】。

13.自定义属性    <--返回目录
    * 不能通过document.getElementById("liId").score;获取属性的值,
    * 通过document.getElementById("liId").getAttribute("score");来获取自定义属性的值
        <ul>
            <li score="100" id="liId">张三的成绩</li>
        </ul>
        
    * 获取li标签,动态添加自定义属性score和值  ele.setAttribute("score",20);
    * 移除自定义属性 ele.removeAttribute("score");

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>标题</title>
    <style type="text/css">
        ul{
            list-style-type: none;
            cursor: pointer;
        }
    </style>
</head>
<body>
<ul>
    <li score="100" id="liId">张三的成绩</li>
</ul>
<script type="text/javascript">
    //获取li标签,动态添加自定义属性score和值
    var ele = document.getElementById("liId");
    ele.setAttribute("score",20);//动态添加自定义属性score和值
    ele.onclick=function(){
        alert(ele.getAttribute("score"));//获取自定义属性score的值
    };
</script>
</body>
</html>

14.案例:tab切换    <--返回目录

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>标题</title>
    <style type="text/css">
        * {
            padding: 0;
            margin: 0;
        }
        span{
            display: inline-block;
            height: 50px;
            font: 20px/50px 微软雅黑;
            background-color: #eee;
            line-height: 50px;/*行高*/
            padding:0 20px;
            cursor: pointer;
        }
        .bd{
             335px;
            height: 150px;
            background-color: #ccc;
        }
        li.current{
            display: inline-block;
        }
        li{
            display: none;
        }

    </style>
</head>
<body>
<div id="box" class="box" >
    <div class="hd" >
        <span style="background-color: #ccc">娱乐</span>
        <span>新闻</span>
        <span>体育</span>
        <span>综合</span>
    </div>
    <div class="bd">
        <ul>
            <li class="current">我是娱乐模块</li>
            <li>我是新闻模块</li>
            <li>我是体育模块</li>
            <li>我是综合模块</li>
        </ul>
    </div>

</div>
<script type="text/javascript">
    //获取所有的span标签
    var sapnEles = document.getElementsByTagName("span");
    //获取所有的li标签
    var liEles = document.getElementsByTagName("li");
    for(var i=0;i<sapnEles.length;i++){
        //在鼠标点击事件之前,先保存索引
        sapnEles[i].setAttribute("index",i);

        //给每个span标签注册鼠标单击事件
        sapnEles[i].onclick=function(){

            //设置所有的span标签的背景色为#eee
            for(var j=0;j<sapnEles.length;j++){
                sapnEles[j].style.backgroundColor="#eee";
            }
            //设置所有的li标签的display属性值为none
            for(var k=0;k<liEles.length;k++){
                liEles[k].className="";
            }
            //设置当前点击的span标签的背景色为#ccc
            this.style.backgroundColor="#ccc";

            //获取当前点击的span标签的index的值
            var index = this.getAttribute("index");
            //alert(index);
            //设置当前点击的span标签对于的li标签的display属性值为inline-block
            liEles[index].className="current";
        };
    }
</script>
</body>
</html>

---

原文地址:https://www.cnblogs.com/xy-ouyang/p/12184864.html