
应该是在这里
for(var i=0;i<thissubmenuslength;i++)
{
thissubmenus[i]onclick=function()
{
mainInstancesetevent(i);
};
}
关键就是这个i等于多少的问题;
过程是这样,
你听过调用myMenuinit();来给9个div添加onclick事件(就是通过上面列出来的一个循环过程),在循环里用到了闭包,但是这个闭包又调用了一个外部参数i,这个i并不是固定的,他是随循环的运行在变,你循环到d6时,i=5,循环结束时i=9。而你触发onclick事件时循环已经结束了,所以你给9个div添加的onclick事件 mainInstancesetevent(i) 就变成了 mainInstancesetevent(9);
解决方法如楼上是可行的,他用了一个新的变量ii把i从循环中剥离出来,
还有一种解决办法,就是循环到某个div时,把i保存到该div的属性中:
for(var i=0;i<thissubmenuslength;i++)
{
thissubmenus[i]setAttribute("i",i);
thissubmenus[i]onclick=function()
{
//mainInstancesetevent(i);
alert(thisgetAttribute("i"));
};
}
1:html代码
<div onclick = "aa()" id="div1"></div>
2:第二部,定义函数
function aa(){
alert("点击div,触发d窗事件!");
}
如果想将相同的js效果运用到多个标签上,可以先使用class类选择器规划好想要运用的对象。然后使用js来统一获取这些对象。通过for循环来解决重复的劳动量(绑定按钮事件或者其他需要的效果)。具体写了一个例子,是菜单展开隐藏的效果,每个菜单都是独立的选项。
<html><head>
<meta charset="UTF-8">
<style>
#content{
display: block;
}
#content btn{
width: 200px;
text-align: center;
position: relative;
display: inline-block;
background-color: #9bb6ff;
}
btn_box{
width: 100%;
height: auto;
position: absolute;
left: 0px;
background-color: red;
display: none;
}
</style>
</head>
<body>
<div id="content">
<div class="btn"><span>111</span>
<div class="btn_box">
</div>
</div>
<div class="btn"><span>222</span>
<div class="btn_box">
d出盒子内容222
</div>
</div>
<div class="btn"><span>333</span>
<div class="btn_box">
d出盒子内容333
</div>
</div>
</div>
</body>
<script>
//统一获得所有需要绑定按钮事件的元素
var btn = documentgetElementsByClassName('btn');
//使用for循环统一绑定需要的事件
//for循环的大致逻辑是从第一个btn对象读取到最后一个
for(var i=0; i<btnlength; i++){
btn[i]onclick = function(){
var btn_box = thisquerySelector('btn_box');
if(btn_boxstyledisplay != 'block'){
btn_boxstyledisplay = 'block';
}else{
btn_boxstyledisplay = 'none';
}
}
}
</script>
</html>
具体可以研究一下,纯手打,望采纳。
点击页面内容文字,即可显示对应div中的内容:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript"src=">
可能原因如下:
1、点击事件名称是onclick,请不要出现拼写错误。
2、事件后面的对应的是方法名称,请确认该方法已经正确定义或者没有出现方法名称的拼写错误,方法名后要加(),如form()。
3、更改标签的内容需要innerHTML且确认以获取到需要更改的div。
onclick实例:
<html><body>
Field1: <input type="text" id="field1" value="Hello World!">
<br />
Field2: <input type="text" id="field2">
<br /><br />
点击下面的按钮,把 Field1 的内容拷贝到 Field2 中:
<br />
<button onclick="documentgetElementById('field2')value=
documentgetElementById('field1')value">Copy Text</button>
</body>
</html>
效果如下:
你要隐藏被点击的那个class="dingshuidingdan"的div?那可以在那个div里边添加
<div class="dingshuidingdan" onclick="thisstyledisplay ='none';">不知道你获取ID的目的是什么?代码里边也没有id啊
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<!-- 引入jquery -->
<script src="js/jquery-172minjs"></script>
</head>
<body>
<ul>
<li>第一个</li>
<li>第二个</li>
<li id="unbind">第三个</li>
</ul>
<script>
$(function(){
//给li绑定点击事件
$("li")click(function(event) {
//返回当前li的索引
alert($(this)index());
});
//给id为unbind的元素删除点击事件
$('#unbind')unbind("click");
})
</script>
</body>
</html>
unbind(type [,data]) //data是要移除的函数
$('#btn')unbind("click"); //移除click
$('#btn')unbind(); //移除所有
以上就是关于帮我看下这 javascript 动态生成div的单击事件问题全部的内容,包括:帮我看下这 javascript 动态生成div的单击事件问题、html点击div触发d窗事件怎么写代码、如何把点击一个divd出新div的js事件应用到多个可供点击的地方等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)