JavaScript事件(五)

举报
AI浩 发表于 2021/12/23 00:02:30 2021/12/23
【摘要】 DOM入门 DOM就是Html页面的模型,将每个标签都做为一个对象,JavaScript通过调用DOM中的属性、方法就可以对网页中的文本框、层等元素进行编程控制。比如通过操作文本框的DOM对象,就可以读取文本框中的值、设置文本框中的值。 JavaScript→DOM就是C#→ADO.NET。DOM就是一些让JavaScript能操作Ht...
  • DOM入门
  1. DOM就是Html页面的模型,将每个标签都做为一个对象,JavaScript通过调用DOM中的属性、方法就可以对网页中的文本框、层等元素进行编程控制。比如通过操作文本框的DOM对象,就可以读取文本框中的值、设置文本框中的值。 JavaScript→DOM就是C#→ADO.NET。DOM就是一些让JavaScript能操作Html页面控件的类、函数。
  2. DOM也像WinForm一样,通过事件、属性、方法进行编程。
  3. CSS+JavaScript+DOM=DHtml
  • DOM模型
  • 事件
  1. 在DOM中有很多事件。演示:
    1.  <body οnmοusedοwn=“alert(‘别点我!’);”>//注意body的范围。Body的范围就是body里内容的范围,如果没有内容,就无法触发事件。
    2. 有时事件的响应代码比较多,就要放到一个函数中:

<script type="text/javascript">

      function userMouseDown() {

            alert('网页被你点坏了>_<~~,赔吧!');

            alert('逗你玩呢~~');

        }

 </script>

<input type="button" value="按钮" οnmοusedοwn=“userMouseDown();" />

注:οnmοusedοwn=“userMouseDown();”中,userMouseDown后的括号不能丢(不能写成οnmοusedοwn=“userMouseDown” ),带()表示调用函数,直接写函数名表示设置事件的处理函数为userMouseDown。可以这样说吧,onclick后会触发一个方法,

οnclick=f1;的意思就是说onclick触发的方法就是f1.

οnclick=“f1()”的意思就是说onclick触发的方法里调用了f1

οnclick=事件引发后的处理程序。

οnclick="        f(this);                "; //在onclick的事件处理程序中调用了f()方法

οnclick=f;//该事件的处理程序就是f()方法。

  • 动态设置事件
  1. JavaScript也可以像.Net中那样动态设置事件,Button.Click+=…

<script type="text/javascript">

function F1() {     alert('In F1');     }

function F2() {     alert('In F2');     }

</script>

<input type="button" value="关联F1" οnclick="document.οnclick=F1;" />

<input type="button" value="关联F2" οnclick="document.οnclick=F2;" />

  1. 注意: οnclick=“document.οnclick=F1;” 此处的F1不要加括号,加括号就编程了调用F1()函数,并且把返回值赋值给document.onclick了。

document.body.onclick范围仅限于body

document.onclick范围为整个文档。

  • 事件冒泡
  1. 事件冒泡:如果元素A嵌套在元素B中,那么A被点击不仅Aonclick事件会被触发,Bonclick也会被触发。触发的顺序是“由内而外” 。验证:在页面上添加一个tabletable里有trtr里有tdtd里放一个p,在ptdtrtable中添加onclick事件响应,例:

<table οnclick="alert('table onclick');">

        <tr οnclick="alert('tr onclick');">

            <td οnclick="alert('td onclick');"><p οnclick="alert('p onclick');">aaaa</p></td>

            <td>bbb</td>

        </tr>

    </table>

  1. 取消事件冒泡: window.event.cancelBubble = true;//IE下的写法。

<table οnclick="alert('table onclick');">

        <tr οnclick=" window.event.cancelBubble = true;alert('tr onclick');">

            <td οnclick="alert('td onclick');">

                <p οnclick=" window.event.cancelBubble = true;alert('p onclick');"> aaaa</p>

            </td>

            <td>

                bbb

            </td>

        </tr>

    </table>

  1. window.onloadbodyonload

1.二者效果完全一样,都是在页面内容都加载完毕后才触发。

2.由于网页中没有window所以在body中写onload

3.建议使用window.onload//使用js脚本的方式高效

4.其实应该是document.onload,但是所有浏览器都实现到了window对象上。

  • 事件中的this
  1. 事件中的this。除了可以使用event.srcElement在事件响应函数中,this表示发生事件的控件。只有在事件响应函数才能使用this获得发生事件的控件,在事件响应函数调用的函数中不能使用(这里的this表示window对象),如果要使用则要将this传递给函数或者使用event.srcElement,例:

 <html xmlns="http://www.w3.org/1999/xhtml">

<head>

    <title></title>

    <script type="text/javascript">

        function f3() {

            alert(event.srcElement.value);

        }

        function f4() {

            //事件的调用函数中this 代表window对象

            alert(this.location.href);

            alert(this.value);

        }

        window.onload = function () {

            btn5.onclick = function () {

                alert(event.srcElement.value);

            }

            btn6.onclick = function () {

                //在事件响应函数中 this代表当前触发事件的对象

                alert(this.value);

            }

        }

    </script>

</head>

<body>

    <input id="btn1" type="button" value="btn1" οnclick="alert(event.srcElement.value)" /><br />

    <input id="btn2" type="button" value="btn2" οnclick="alert(this.value)" /><br />

    <input id="btn3" type="button" value="btn3" οnclick="f3()" /><br />

    <input id="btn4" type="button" value="btn4" οnclick="f4()" /><br />

    <!-- 此时this是触发事件的对象-->

     <!--<input id="Button1" type="button" value="btn4" οnclick="f4(this)" />--><br />

    <input id="btn5" type="button" value="btn5" /><br />

    <input id="btn6" type="button" value="btn6" /><br />

</body>

</html>

  1. (*)thisevent.srcElement的语义是不一样的,this就是表示当前监听事件的这个对象,event.srcElement是引发事件的对象:事件冒泡,例:

  <!--srcElement  引发事件的对象-->

     <table οnclick="alert(event.srcElement.innerHTML);">

        <tr οnclick="alert(event.srcElement.innerHTML);">

            <td οnclick="alert(event.srcElement.innerHTML);"><p οnclick="alert(event.srcElement.innerHTML);">aaaa</p></td>

            <td>bbb</td>

        </tr>

    </table>

     <!--this  监听事件的这个对象-->

     <table οnclick="alert(this.innerHTML);">

        <tr οnclick="alert(this.innerHTML);">

            <td οnclick="alert(this.innerHTML);"><p οnclick="alert(this.innerHTML);">aaaa</p></td>

            <td>bbb</td>

        </tr>

    </table>

  1. <body οnclick=//这个叫做事件调用函数,在这里写this表示发生事件的控件。在这里调用另外一个函数F1,F1中不能使用this表示发生事件的控件”>

 

文章来源: wanghao.blog.csdn.net,作者:AI浩,版权归原作者所有,如需转载,请联系作者。

原文链接:wanghao.blog.csdn.net/article/details/106500306

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。