(3)document对象续

(1.4)事件冒泡

假设元素a嵌套在元素b中,a被点击了不仅a的onclick事件会被触发,b的onclick事件也会被触发,执行顺序是由内而外执行。

(1.5)事件中的this关键字

例子:

</pre><pre name="code" class="csharp"><html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>事件冒泡与事件中的this关键字</title>
    <script type="text/javascript">
        //事件冒泡指的的:假设a元素嵌套在b元素中,那么a被点击触发a的onclick事件也触发b的onclick事件,触发顺序a->b。
        //this指的是当前对象。函数中的this指的是当前函数对象,标签中的this指的是当前标签对象。
        //可以通过this传递来获取引发事件触发的控件
        //也可以通过event.srcElement来获取事件源控件
        //--------------------------------------------------------------------------------------------------
        //οnclick="btnClick1()"是普通函数调用。这里表示onclick的处理函数是匿名函数fuction(){btnClick1();};函数的实现是调用外部window.btnClick1();匿名函数的是btn1的函数,btnClick1()是window的函数,this表示一种从属关系,函数与对象的关系。看破现象,直击本质。
        function btnClick1() {
            alert(this);
        }
        //btn2通过this传递btn2对象进来
        function btnClick2(btn) {
            alert(btn.value);
        }
        //btn3.value 通过this.value传递进来
        function btnClick3(value) {
            alert(value);
        }
        //使用event.srcElement来获取事件源元素
        function btnClick4() {
            alert(event.srcElement.value);
        }
        //动态给btn5.onclick的绑定处理函数btn5click
        function btn5Event() {
            var btn = document.getElementById("btn5");
            btn.onclick = btn5click;
        }
        //使用this关键字,this指向btn5,原因相当于在btn5onclick事件直接写(绑定函数),而不是调用函数。
        //调用函数的话 相当于
        function btn5click() {
            alert(this.value);
        }
    </script>
</head>
<body οnlοad="btn5Event()">

<input type="button" value="btn1" οnclick="btnClick1()"/>
<input type="button" value="btn2" οnclick="btnClick2(this)"/>
<input type="button" value="btn3" οnclick="btnClick3(this.value)"/>
<input type="button" value="btn4" οnclick="btnClick4()"/>
<input type="button" value="btn5" id="btn5" />
</body>
</html>
 (1.6)Dom修改样式 

</pre><pre name="code" class="html"> <html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>修改样式(js与css中样式属性名描述不一样)</title>
    <script type="text/javascript">
        //修改元素的样式是设置className属性
        //css与js样式名称的不一致:注意css中属性名在js中操作的可能不一样。注意在那线属性名中函数-的属性。如background-color在js中是style.background。元素样式名是class在js中是className。font-size->style.fontSize;margin-top->marginTop
        //单独修改样式的属性使用style.属性名。
        //选择器前面html中已有描述,这么不再描述。
        function setbgcolor() {
            //样式名字要双引号....
            document.getElementById("divTest").className = "night";
        }
    </script>
    <style type="text/css">
    .day
    {
    	background-color:Green;
    }
    .night
    {
    	background-color:White;
    }
    </style>
</head>
<body>
<div id="divTest" class="day">测试</div>
<input type="button"  οnclick="setbgcolor()"/>
<!-- 单独修改制定属性的样式 注意js和css的区别-->
<input type="button" οnclick="this.style.background='Green';" />
</body>
</html>
用途:视频网上的开关灯效果。(body背景颜色的设置。)

示例一:给txt设置颜色

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>修改样式练习1,给txt设置颜色</title>

    <script type="text/javascript">
        function AddEvent() {
        //元素数组 动态给txt添加事件
            var txts = document.getElementsByTagName("input");
            for (var i = 0; i < txts.length; i++) {
                var txt = txts[i];
                //这里可以使用this,相当于在标签中写事件。
                txt.onblur = onblurSetColor;
            }
        }
        function onblurSetColor() {
            //天啊 注意length别拼错,浪费生命
            //判断txt的值是否长度<=0来判断是否为空
            if (this.value.length <= 0) {
                this.style.background = "red";
            }
            else {
                this.style.background = "green";
            }
        }
    </script>
</head>
<body οnlοad="AddEvent();">
    <input type="text"  />
    <input type="text"  />
    <input type="text" />
</body>
</html>
示例二:评分控件

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>设置评分控件</title>

    <script type="text/javascript">
        //给td添加监听事件
        function setEvent() {
            var tds = document.getElementsByTagName("td");
            for (var i = 0; i < tds.length; i++) {
                var td = tds[i];
                //设定元素上面的鼠标显示图标
                td.style.cursor = "pointer";
                td.onclick = tdonclick;
                td.style.background = "Aqua"
            }
        }
        function tdonclick() {
            //js没有indexof方法。jQuery有,这里要在自个写。
            var tds = document.getElementsByTagName("td");
            var thisindex = indexOf(tds, this);
            for (var i = 0; i <= thisindex; i++) {
                tds[i].style.color = "red";
            }
            for (var j = thisindex + 1; j < tds.length; j++) {
                tds[j].style.color = "white";
            }

        }
        //自定义取得td的index方法
        function indexOf(arr, element) {
            for (var i = 0; i < arr.length; i++) {
                if (arr[i] == element) {
                    return i;
                }
            }
        }
    </script>

</head>
<body οnlοad="setEvent()">
    <table>
        <tbody><tr><td >☆</td><td>☆</td><td>☆</td><td>☆</td><td>☆</td></tr></tbody>
    </table>
</body>
</html>

示例三:表格隔行变色,通常用来设置表格的显示样式

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>表格隔行变色1(载入完成,设置默认颜色)</title>
    <script type="text/javascript">
    //表格经常使用
        function setColor() {
            var trs = document.getElementsByTagName("tr");
            for (var i = 0; i < trs.length; i++) {
                if (i % 2 == 0) {
                    var tr = trs[i];
                    tr.style.background = "Yellow";
                }
            }
        }
    </script>
</head>
<body οnlοad="setColor();">
    <table>
        <tbody><tr><td>吞噬星空</td></tr><tr><td>天魔神谭</td></tr><tr><td>西游记</td></tr><tr><td>大话</td></tr><tr><td>宝莲灯</td></tr><tr><td>哪吒闹海</td></tr></tbody> </table>
</body>
</html>
示例四:表格行被点击则表色,可以用来设置行被点击的时候事件

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>表格颜色设置2(被点击的行尾黄色,其他为白色)</title>
    <script type="text/javascript">
        //应用:可以选择当前行触发事件,比如弹出一个文本框显示tr的信息。
        //思路:
        //(1)给每个行增加监听事件,通过组元素来动态添加事件
        //(2)编写写事件的绑定处理函数
        function initEvent() {
            var trs = document.getElementsByTagName("tr");
            for (var i = 0; i < trs.length; i++) {
                var tr = trs[i];
                tr.onclick = trOnClick;
                //鼠标光标标签
                tr.style.cursor = "pointer";
            }
        }
        function trOnClick() {
            var trs = document.getElementsByTagName("tr");
            for (var i = 0; i < trs.length; i++) {
                var tr = trs[i];
                this.style.background = "Yellow";
                if (tr != this) {
                    tr.style.background = "White";
                }
            }
        }
    </script>
</head>
<body οnlοad="initEvent();"> 
    <table>
        <tbody><tr><td>吞噬星空</td></tr><tr><td>天魔神谭</td></tr><tr><td>西游记</td></tr><tr><td>大话</td></tr><tr><td>宝莲灯</td></tr><tr><td>哪吒闹海</td></tr></tbody> </table>
</body>
</html>
示例五:获取焦点的文本框颜色设置

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>获取焦点的文本框颜色为黄色,其他为白色</title>

    <script type="text/javascript">
        function initEvent() {
            var txts = document.getElementsByName("txt");
            for (var i = 0; i < txts.length; i++) {
                var txt = txts[i];
                txt.onfocus = txtSetColor;
            }
            //方式二,可以bytag方式来取元素,再判断type,不过还是推荐用byname
        }
        function txtSetColor() {
            var txts = document.getElementsByName("txt");
            this.style.background = "Yellow";
            for (var i = 0; i < txts.length; i++) {
                if (txts[i] != this) {
                    txts[i].style.background = "White";
                }
            }
        }
    </script>

</head>
<body οnlοad="initEvent();">
    <input type="text" name="txt" />
    <br />
    <input type="text" name="txt" />
    <br />
    <input type="text" name="txt" />
    <br />
    <input type="text" name="txt" />
    <br />
    <input type="text" name="txt" />
</body>
</html>
示例六:改变超链接的背景颜色和阻止点击超链接的默认事件

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>改变超链接的背景颜色</title>

    <script type="text/javascript">
        //目的:点击一个超链接,被点击的超链接变为红色背景,其他超链接的背景还原为白色
        //动态给a标签添加点击事件
        function initEvent() {
            var links = document.getElementsByTagName("a");
            for (var i = 0; i < links.length; i++) {
                //绑定事件
                links[i].onclick = onclick;
            }
        }
        //自定义点击事件,注意event.returnValue:是否取消的事件元素的默认动作(如表单提交,页面跳转)这里超链接指的是页面跳转,默认值是true,我们设置为false,他就不会执行默认页面跳转行为。
        function onclick() {
            this.style.background = "red";
            //阻止跳转到超链接指定的地址。
            window.event.returnValue = false;
            var links = document.getElementsByTagName("a");
            for (var i = 0; i < links.length; i++) {
                if (links[i] != this) {
                    links[i].style.background = "white";
                }
            }
        }
    </script>

</head>
<body οnlοad="initEvent()">
    <a href="http://www.baidu.com">百度</a>
    <br />
    <a href="http://www.sina.com">新浪</a>
    <br />
    <a href="http://www.qq.com">腾讯</a>
    <br />
    <a href="http://www.tudou.com">土豆</a>
</body>
</html>








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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值