js的监听事件

js的监听事件,第1张

<table id="table_id">
<tr>
<td><p>1,1</p></td>
<td><p>1,1</p></td>
<td><p>1,1</p></td>
<td><p>1,1</p></td>
</tr>
<tr>
<td><p>1,1</p></td>
<td><p>1,1</p></td>
<td><p>1,1</p></td>
<td><p>1,1</p></td>
</tr>
<tr>
<td><p>1,1</p></td>
<td><p>1,1</p></td>
<td><p>1,1</p></td>
<td><p>1,1</p></td>
</tr>
<tr>
<td><p>1,1</p></td>
<td><p>1,1</p></td>
<td><p>1,1</p></td>
<td><p>1,1</p></td>
</tr>
</table>
<p>kkkkkkkkkk</p>
<script type="text/javascript">
var tb=documentgetElementById('table_id') //获取到这个table,用其它方法也可以
ps=tbgetElementsByTagName("p"),
trs=tbgetElementsByTagName("tr")
trsindex=function(tr){
for(var i=0;i<thislength;i++){
if(this[i]===tr)return i
}
}
for(var i=0;i<pslength;i++){
ps[i]onclick=function(){
var pp=thisparentNodeparentNode //要确定这样的层次,table里的p全在tr->td->里面
var tds=ppgetElementsByTagName("td")
tdsindex=trsindex
alert(tdsindex(thisparentNode)+"\n"+trsindex(pp))
}
}
</script>
索引已经有了,其中的规律你看下就明白了

当内存占用越来越高,轻则影响系统性能,重则导致进程崩溃。Chrome限制了浏览器所能使用的内存极限,64位为14GB,32位为10GB。

1意外的全局变量
未声明变量
使用this创建的变量(this指向window)
解决办法:
避免创建全局变量
使用严格模式,在js文件头部或者函数的顶部加上use strict
2闭包引起的内存泄露
原因:闭包可以读取函数内部的变量,然后让这些变量是始终保存在内存中。如果在使用结束后没有将局部变量清除,就可能导致内存泄露。
解决:将事件处理函数定义在外部,解除闭包,或者在定义事件处理函数的外部函数中。
3没有清除的DOM元素引用
原因:虽然别的地方删除了,但是对象中还存在对DOM的引用。
解决办法:手动删除,赋值为null
4被遗忘的定时器或者回调
解决办法:手动删除定时器和DOM,removeEventListener移除事件监听

1addEventListener()与removeEventListener()用于处理指定和删除事件处理程序 *** 作;

2所有的DOM节点中都包含这两种方法,并且它们都接受3个参数:要处理的事件名、作为事件处理程序的函数和一个布尔值。最有这个布尔值参数是true,表示在捕获阶段调用事件处理程序;如果是false,表示在冒泡阶段调用事件处理程序;

3由于IE只支持事件冒泡,所以同大多数情况下,都是将事件处理程序添加到事件流的冒泡阶段,这样可以最大限度地兼容各种浏览器;

最好只在需要在是事件到达目标之前截获它的时候将事件处理程序添加到捕获阶段。如果不是特别需要,不建议在事件捕获阶段注册事件处理程序。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13396093.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-28
下一篇 2023-07-28

发表评论

登录后才能评论

评论列表(0条)

保存