你的意思是如果用arrLayer[2,5]初始化,那么显示的结果是只alert 6和2,还是从6一直alert到2?
解决方案 »
- $java异步获取数据问题.
- Ext.getCmp("username").getEl() is undefined
- 关于window.open()使用之后的问题,请教高手
- JS中函数可以看作是对象,那么函数对象必定有构造函数,那么这个构造函数又是什么?有点感觉是鸡生蛋,蛋生鸡
- Dtree
- IE6\IE7,按图片原大小查看图片时,怎样使图片垂直、水平居中?
- createPopup的高难度问题,已经N天了都没人回答
- 复选框如何校验是否勾选
- 如何获得Form表单你的所有单选框
- 急!请问如何计算一个表单从提交到返回的时间?
- --------------------------这段代码 哪错了????
- 一段用JavaScript写的实现AJAX代码
arrLayer[2,5]应该是说先alert第2层,在alert 第5层吧 没能理解.....
按楼主的代码
如果 onclick="alert(6)" 这个事件停止冒泡的话, 那么他所有父级元素的onclick事件就不会触发, 所以无法这样控制的...
e.returnValue =false 阻止默认事件行为.....
<body>
<div onclick="alert(1)">
<div onclick="alert(2)">
<div onclick="alert(3)">
<div onclick="alert(4)">
<div onclick="alert(5)">
<input id="oo" value="button" type="button" onclick="alert(6)">
</div>
</div>
</div>
</div>
</div>
</body>
<script>
var arrLayer = [2,5]
var ok =0
var pan =false
var obj=document.getElementById("oo")
function init(layer){
while (obj!=document.body){
obj=obj.parentNode
ok++
for(var i=0;i<layer.length;i++)
{
if(ok==layer[i])
{pan=true}
}
if(pan)
{pan=false
continue;}
else
{obj.onclick=function(e){
e=e||event
e.returnValue =false}}
}
}
init(arrLayer)
</script>
<body>
<div id="l1" onclick="alert(1)">
<div id="l2" onclick="alert(2)">
<div id="l3" onclick="alert(3)">
<div id="l4" onclick="alert(4)">
<div id="l5" onclick="alert(5)">
<input id="l6" type="button" onclick="alert(6)">
</div>
</div>
</div>
</div>
</div>
<script>
var arrLayer = [3,2,5] //当前响应事件的层数
function init(layer){
//需要实现的代码 for (i=1;i<=6;i++){
var f = false;
for(j=0;j<layer.length;j++){
if( layer[j]==i ){
f = true;
break;
}
}
if( f==false ){
document.getElementById("l"+i).onclick = null;
}
}
}
init(arrLayer)
</script>
</body>
</html>
没有办法一次性把所有事件的句柄都取到。
只有像12楼那样一个一个的设定了。
好在事件的个数并不是特别多。 if( f==false ){
with (document.getElementById("l"+i)){
onclick = null;
onmousedown = null;
onmousemove = null;
......
}
}