9.16学习内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Day2</title>
    <style>
    /*     *{
            border: 0;
            padding: 0;
        } */
        ul{
            border: 0;
            padding: 0;
        }
        #imggallery li{
            list-style: none;
            display: inline-block;
        }
        #img2{
             640px;
            height: 400px;
        
        }
        .hd    {
            height: 50px;
             100%;
            clear: both;
        }
        .hd span{
            box-sizing: border-box;    
            float: left;
            height: 50px;
             100px;
            border: 1px solid black;
            line-height: 50px;
            text-align: center;
            margin-right: -1px;    /* 相邻边框消除 */
        }
        .hdOn{
            background-color: pink;
        }
        .bd{
             400px;
            height: 400px;
        }
        ol{
            list-style: none;
            padding: 0;
            margin: 0;
        }
        ol li{
            display: none;

        }
        .bdOn{
            background-color: pink;
            display: block;
             400px;
            height: 400px;
        }
    </style>
</head>
<body>
    

    <!-- 禁用文本框 -->
    <input type="button" value="禁用" id="btn1">
    <input type="text" name="" id="tx1">

    <script>
        document.getElementById("btn1").onclick = function(){
            var tx1 = document.getElementById("tx1");
            tx1.disabled = true;
        };
    </script>

    <!-- 阻止超链接跳转  在点击事件中用return false 阻止默认的浏览器点击事件,也可以添加新事件-->
    <a href="http://www.baidu.com" onclick = "return false">百度</a>
    <a href="http://www.baidu.com" onclick = "alert('哈哈'); return false">百度</a>
    <a href="http://www.baidu.com" onclick="f1()">百度</a>    <!-- 这样不能阻止跳转,因为f1结果为false,而不是return false -->
    <a href="http://www.baidu.com" onclick="return f1()">百度</a>  <!--     正常 -->

    <a href="http://www.baidu.com" id="ak">百度</a>  
    <script>
        function f1(){
            alert("嘻嘻");
            return false;
        }
        document.getElementById("ak").onclick = function(){
            alert("嘻嘻");
            return false;
        };
    </script>

    <!-- 可以创建一个common.js表示公共的js文件并引用,里面存放一些公共的函数 -->

    <!-- 相册案例 -->
    <ul id = "imggallery">
        <li><a href="images/1.jpg" ><img src="images/1-small.jpg" alt=""></a></li>
        <li><a href="images/2.jpg" ><img src="images/2-small.jpg" alt=""></a></li>
        <li><a href="images/3.jpg" ><img src="images/3-small.jpg" alt=""></a></li>
        <li><a href="images/4.jpg" ><img src="images/4-small.jpg" alt=""></a></li>
    </ul>
    <div id="dv1">
        <img src="" alt=" " id="img2">
    </div>
    <script src="common.js">//创建一个common.js表示公共的js文件并引用,里面存放一些公共的函数</script>
    <script>
            var imgObj = my$("imggallery").getElementsByTagName("a");
            console.log(imgObj);
            for(var i = 0; i < imgObj.length; i++){
                imgObj[i].onclick = function(){
                    my$("img2").src = this.href;    
                    return false;
                };
            } 
    </script>


    <!-- 案例:改变背景颜色 -->
    <input type="button" value="变色" id="btn2">
    <ul id="uu">
        <li>1234567</li>
        <li>1234567</li>
        <li>1234567</li>
        <li>1234567</li>
        <li>1234567</li>
        <li>1234567</li>
        <li>1234567</li>
        <li>1234567</li>
    </ul>
    

    <script>
        my$("btn2").onclick = function(){
            var liObj = my$("uu").getElementsByTagName("li");
            for (i = 0; i < liObj.length; i++){
                // if (i%2==0) {
                //     liObj[i].style.backgroundColor = "red";
                // }else{                //奇红偶黄注意i从零开始
                //     liObj[i].style.backgroundColor = "yellow";
                // }
                liObj[i].style.backgroundColor = i % 2 == 0 ? "red" : "yellow";
            }
        };
    </script>


    <!-- onmouseover事件:鼠标进入        onmouseout事件:鼠标离开 -->
    <ul id="uu2">
        <li>fasfgaaabzc</li>
        <li>fasfgaaabzc</li>
        <li>fasfgaaabzc</li>
        <li>fasfgaaabzc</li>
        <li>fasfgaaabzc</li>
        <li>fasfgaaabzc</li>
        <li>fasfgaaabzc</li>
        <li>fasfgaaabzc</li>
    </ul>
    <script>
        var liObj2 = my$("uu2").getElementsByTagName("li");
        for (i = 0; i < liObj2.length; i++) {
            liObj2[i].onmouseover = function(){
                this.style.backgroundColor = "yellow";
            };
            liObj2[i].onmouseout = function(){
                this.style.backgroundColor = "";
            };
        }
    </script>

    <!-- 一些其他的获取元素的方式 -->
    <!-- 根据name属性值获取表单里的标签元素:getElementsByName() -->
    <!-- 根据类名获取标签元素:getElementsByClassName() -->
    <!-- querySelector(选择器)根据选择器返回第一个元素 -->
    <!-- querySelectorAll(选择器)根据选择器返回所有元素伪数组 -->


    <!-- 一些其他DOM事件 -->
    <!-- onfocus获得焦点事件 -->
    <!-- onblur失去焦点事件 -->

    <!-- 案例:搜索框 -->
    <input type="text" value="请输入搜索内容" id="sousuo" style="color:gray; outline: none;">
    <script>
        var txt = document.querySelector("#sousuo");        //与document.getElementById("sousuo")效果一样
        txt.onfocus = function(){
            if (this.value == "请输入搜索内容") {
                this.value = "";
                this.style.color = "black";
            }
        };
        txt.onblur = function(){
            if(this.value == ""){    //这里改成this.value.length == 0更好,因为比较字符串更浪费资源
                this.value = "请输入搜索内容";    
                this.style.color = "gray";
            }
        };
    </script>

    <!-- innerText 与 innerHTML -->
    <div  id = "div2" style=" 100px;height: 100px;border: 1px dotted red;">
        
    </div>

    <script>
        my$("div2").innerText = "<p>这是一个p</p>";    //innerText不能添加标签,只能设置文本
        my$("div2").innerHTML = "<p>这是一个p</p>";    //innerHTML可以设置新标签,当然也可以设置文本内容
        console.log(my$("div2").innerText);            //innerText只能获取文本内容
        console.log(my$("div2").innerHTML);            //innerHTML可以获取内部的标签和文本
    </script>


    <!--innerText 和textContent的区别差异: 
    1. textContent不会理会html格式,会输出隐藏的文本 
    2. innerText会根据标签里面的样式输出显示出的文本

    3.兼容性: 
    innerText 谷歌 火狐 IE8都支持
    textContent IE8不支持
     -->
     <!-- 兼容代码:如果有的方法浏览器不支持的话,那么得到的是undefined
        根据这个原理编写兼容代码
        以textContent和innerText为例
      -->
      <script>
          function setInnerText(element, text){    //编写一个设置文本内容的函数
              if(typeof element.textContent == "undefined"){
                  element.innerText = text;    //如果不支持textContent,则利用innerText
              }else{
                  element.textContent = text;//支持则利用textContent
              }
        }

        function getInnerText(element){    //编写一个获取文本内容的函数
            if(typeof element.textContent == "undefined"){
                  return element.innerText;    //如果不支持textContent,则利用innerText
              }else{
                  return element.textContent;//支持则利用textContent
              }
        }

      </script>
    

    <!-- 可以自定义Html标签中没有的属性--自定义属性,用来存放一些数据
        但是自定义属性不能通过DOM得到的标签对象直接获得,需要使用getAttribute("自定义属性")来获取
        也可以在OMD对象中设置自定义属性,如果使用.的方式设置,则不能在HTML中添加属性,只能添加到DOM对象上,
        可以使用setAttribute("自定义属性名","自定义属性值")来设置,会添加到Html对象中

        可以使用removeAttribute("自定义属性名")来移除html标签中的自定义属性,也可以移除HTML固有的属性

     -->
     <h3>点击英雄查看终结技</h3>
     <p terminus = "重力喷涌" style="cursor:pointer;">查莉亚</p>
     <p terminus = "原始暴怒" style="cursor:pointer;">温斯顿</p>
     <p terminus = "鸡飞狗跳" style="cursor:pointer;">路霸</p>
     <p terminus = "裂地猛击" style="cursor:pointer;">大锤</p>
    
    <script>
        var pObj = document.getElementsByTagName("p");
        for(i = 0; i<pObj.length; i++){
            pObj[i].onclick = function(){
                // alert(this.terminus);        //这样不能得到自定义属性值
                alert(this.getAttribute("terminus"));    //这样可以
            }
        }
    </script>

    

    <!-- 案例:切换标签改变 -->
    <div class="hd" id="hd">
        <span class="hdOn">新闻</span>
        <span>娱乐</span>
        <span>体育</span>
        <span>科技</span>
    </div>
    <div class="bd" id="bd">
        <ol>
            <li class="bdOn">这是新闻模块</li>
            <li>这是娱乐模块</li>
            <li>这是体育模块</li>
            <li>这是科技模块</li>    
        </ol>    
    </div>
    <script>
        var hds = document.getElementById("hd").getElementsByTagName("span");
        var bds = document.getElementById("bd").getElementsByTagName("li");
    
        //循环遍历给hds添加点击事件
        for (var i = 0; i < hds.length; i++) {
            hds[i].setAttribute("num",i);        //设置一个自定义属性为索引
            hds[i].onclick = function(){
                //1.所有hd的模块样式清零
                //2.被点击的模块修改样式
                for(j = 0;j <hds.length; j++){
                    hds[j].className= "";
                }
                this.className = "bdOn";

                //1.所有的bd模块隐藏
                //2.对应的bd模块修改样式
                for(k = 0;k < hds.length; k++){
                    bds[k].className = "";
                }

                bds[this.getAttribute("num")].className = "bdOn"    //无法获得对应的索引?,办法:利用setAttribute设置一个自定义属性存放索引,然后获取this的该属性值以利用
            };

        }
    </script>

</body>
</html>
原文地址:https://www.cnblogs.com/yucheng6/p/9657539.html