关于JS中function onclick()嵌套的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于JS中function onclick()嵌套的问题相关的知识,希望对你有一定的参考价值。

目前遇到了一个问题,在网页中有一个按钮,然后JS中的一个onclick事件,动态生成了k个div,以及按钮,k是一个变量,按钮命名为”btn“+k,现在要给这些按钮写onclick事件要怎么写啊,因为这个onclick函数名是个变量啊。。。求各路大神指导。。。
function btnclick1()
var arr = str.split(";");

for(var i=1;i<arr.length;i++)
var div=document.createElement("div");

div.innerhtml="对于步骤“"+arr[i]+"”是否为关键控制点的分析<input type='button' value='开始' id='btn"+i+"' name='btn"+i+"' onclick='btn"+i+"()'/>";

document.body.appendChild(div);



目前JS代码如上,onclick的方法应该怎么写啊。。。

// 因为按钮时动态生成的,所以需要使用live方法绑定click事件

$('#btn' + k).live("click", function()
// 这里是事件的处理

);追问

我把代码贴出来了,能告诉我怎么写吗,我是新手。。。

参考技术A #('#btn'+k).bind('click',function()函数主体);

不知道你是不是使用了jQuery,上述方法是使用了jQuery的,如果是普通的,那么就直接使用addEvent方法追问

不太懂诶。。。

关于js闭包之小问题大错误

闭包是 JavaScript 开发的一个关键方面:匿名函数可以访问父级作用域的变量。

如果闭包的作用域中保存着一个 HTML 元素,则该元素无法被销毁。(下面代码来自高程)

刚看到一个关于闭包自己没注意到的地方,

function assgin() {
    var ele = document.getElementById(‘someEle‘);
    ele.onclick = function(){
        alert(ele.id);
    }
}

以上代码创建了一个作为 ele 元素事件处理程序的闭包,而这个闭包有创建了一个循环的引用,由于匿名函数保存了一个 assgin() 的活动对象的引用 ,因此无法减少对 ele 的引用次数 , 只要匿名函数存在,ele的引用次数至少是 1。我们可以稍微改写一下:

function assgin() {
    var ele = document.getElementById(‘someEle‘);
    var id = ele.id
    ele.onclick = function(){
        alert(id);
    }
    ele = null;
}

上面代码中,通过把 ele.id 的一个副本保存在一个变量中,并且在比保重引用该变量消除了循环引用,但是这样还不能解决内存泄露,闭包会引用包含函数的整个活动对象,而其中包含着 ele ,即使闭包不直接引用 ele ,包含函数的活动对象中也会保存 一个引用,因此需要把 ele 变量设置为 null ,这样就解除了对 DOM 对象的引用,减少其引用数,确保能正常回收。

翻看之前关于闭包的文章,确实学习不足   深入理解JS闭包(https://www.cnblogs.com/7qin/p/9740799.html)

摘自:https://segmentfault.com/a/1190000010477169

以上是关于关于JS中function onclick()嵌套的问题的主要内容,如果未能解决你的问题,请参考以下文章

js 如何 动态建立onclick事件并附动态值

关于js闭包之小问题大错误

关于js中onclick字符串传参问题

关于JS修改a标签的onclick方法后修改的JS方法不能使用的问题?

JS 事件对象

JavaScript 闭包