我正在尝试使用 Javascript / JQuery 来动态创建几个 HTML 按钮,每个按钮在单击时都会执行不同的操作。
我的第一次尝试是这样的:
function myFunc( target_div, num_buttons ) {
var buttons="";
for ( var i=0; i<num_buttons; i++ ) {
buttons += '<input type="button" id="button_'+i+'" value="button_'+i+'"></input>';
}
target_div.html( buttons );
var doButtonPress = function( i ) {
alert( i ); // I actually do something more complicated here, but it's not important now
}
for ( var i=0; i<num_buttons; i++ ) {
$('#button_'+i).click( function() { doButtonPress(i); } );
}
}
不幸的是,这不起作用,因为(我认为)当点击事件发生时,doButtonPress 总是在 myFunc 的范围内传递 i 的当前值,而不是 - 如我所愿 - 定义点击事件时的值。因此,无论按下哪个按钮,传递给 doButtonPress 的值始终等于 num_buttons。所以我然后尝试了这个:
$('#button_'+i).click( new Function( "doButtonPress("+i+");" ) );
不幸的是,这也不起作用 - 我收到一条消息“ReferenceError:找不到变量:returnResult”。我认为这是因为在单击事件发生之前不会解析 Function 构造函数的 arg 值,而那时我已经超出了 myFunc 的范围,所以 doButtonPress 未定义?到目前为止,我做得对吗?
所以……我该怎么办?:-)