JS——事件
我发现了对于<a>如果有onclick的话,就先执行onclick然后在href,其实很简单,如果onclick是“return false”的话,就不会再执行href跳转了
<a href="http://baidu.com" onclick=" return Test();">戳我</a> <script> function Test() { alert("123"); return false; } </script>
注意:要想阻止跳转,就必须onclick=“return false;” 如果是方法的话,必须在方法前加return,因为方法返回的是 false这个值,必须再加return才能阻止默认的跳转
onload事件:页面都加载完成后才执行
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script>
alert(1111111111111);
</script>
</head>
<body onload="alert(22222222222222);">
<a href="http://baidu.com" onclick=" return Test();">戳我</a>
<script>
alert(33333333);
</script>
</body>
<script>
alert(44444);
</script>
</html>
弹出的结果是 1 3 4 2
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script>
t = function () {
alert(1111);
}
</script>
</head>
<body onload="t();">
<a href="http://baidu.com" onclick=" return Test();">戳我</a>
<script>alert(222);</script>
</body>
</html>
先弹出 222 在弹出 1111
还可以写成这样,效果相同
<script> t = function () { alert(1111); } window.onload = t; </script> </head> <body > <a href="http://baidu.com" onclick=" return Test();">戳我</a> <script>alert(222);</script> </body>
我发现一个奇怪的现象:对于事件来说,在调用的是 事件名=方法名(方法行的变量而不是 方法名()),好奇怪,也可以写成 事件名="方法名();"
<script> window.onload = function () { alert(1111); } </script> </head> <body> <a href="http://baidu.com" onclick=" return Test();">戳我</a> <script>alert(222);</script> </body>
在一个事件处理程序里,event代表该事件对象,而event.srcElement代表发生事件的事件源对象
<script> Test = function () { event.srcElement.innerText = "abc"; } </script> </head> <body> <div onclick="Test()">111111111111</div> <p onclick="Test()">22222222222</p> </body>
等同于
<script> Test = function (obj) { obj.innerText = "abc"; } </script> </head> <body> <div onclick="Test(this)">111111111111</div> <p onclick="Test(this)">22222222222</p> </body>
这个event事件对象呢,除了 srcElement以外还有keyCode还有clientX等,
<div id="d"></div> <script> var d = document.getElementById("d"); document.onmousemove = function () { // var ex = e || window.event; 解决浏览器兼容event问题 var cx = event.clientX; var cy = event.clientY; var sx = event.screenX; var sy = event.screenY; var str = "cx=" + cx + "cy=" + cy + "sx=" + sx + "sy=" + sy; d.innerText = str } </script>
clientX clientY是指客户端浏览器窗口的x和y的距离,而screenX和screenY则是到整个屏幕的x和y的距离,结果如下

冒泡事件
<div onclick="t1()">1111<div onclick="return t2();">2222</div></div> <script> function t1() { alert(1); } function t2() { alert(2); // window.event.cancelBubble=true; 阻止事件冒泡 } </script>
正常情况下,点击111弹出1 点击2222弹出2在弹出1,这就是冒泡,阻止冒泡也很简单,如上就可以了
浙公网安备 33010602011771号