帮我看下这 javascript 动态生成div的单击事件问题

帮我看下这 javascript 动态生成div的单击事件问题,第1张

应该是在这里

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">

                d出盒子内容111

            </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事件应用到多个可供点击的地方等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://www.54852.com/web/10157578.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存