我意识到在这里也有人问过类似的问题,Javascript - Dynamically assign onclick event in the loop,但我想我有点困惑,无法添加评论。
我在"newdiv“数组中动态地创建了一系列div。我想创建一个onClick函数,它将offsetHeight扩展到scrollHeight。
我正尝试在我的for循环中这样做:
newdiv[i].onclick = function() {expandThis(message_id) };
哪里
message_id = message_array[i][0];
(数组中的id列,消息'i')
这个问题很常见--所有生成的onClicks都引用了最后一个message_id。有没有一种简单的方法使newdivi的onClick引用message_arrayi
发布于 2011-08-08 09:33:57
你需要用message_id打破这个闭包:
newdiv[i].onclick = (function(id) {
return function() {expandThis(id) };
}(message_id));
像这样的问题有上百万个,例如Do while javascript Problem。
发布于 2011-08-08 09:13:35
您可以使用匿名函数创建一个闭包来包含要引用的值。
function(message_id) {
newdiv[i].onclick = function() {expandThis(message_id) };
}(message_array[i][0]);
JavaScript是一种不带Let语句的函数式编程语言。所以你必须写一个等价的闭包,就像它看起来那样丑陋。
发布于 2011-08-08 09:07:09
您可以动态创建javascript代码并将其存储在var中,然后使用evalute()函数并将结果分配给onclick回调函数。
https://stackoverflow.com/questions/6979830
复制相似问题