使用Javascript在onclick属性中的变量范围

时间:2009-05-12 08:58:59

标签: javascript variables prototype

我正在使用Prototype并尝试动态访问循环中的变量。

代码说得比我好:

for (var i=0;i<5;i++) {
    $('parent' + i).insert('<input type="button" value="Cancel" onclick="$('parent' + i).remove()" />', {position: 'after'});
}

当我点击任何取消按钮时,问题是“我没有定义”。

如何更改变量范围,以便“i”为每个按钮保留正确的值? 我对任何工作都不感兴趣。

3 个答案:

答案 0 :(得分:2)

你可以这样做 -

for (var i = 0; i < 5; i++) {

    $('parent' + i).insert('<input type="button" value="Cancel" onclick="$(\'parent' + i + '\').remove()" />', {position: 'after'});
}

它会像这样呈现 -

<input type="button" value="Cancel" onclick="$('parent1').remove()" />
<input type="button" value="Cancel" onclick="$('parent2').remove()" />
<input type="button" value="Cancel" onclick="$('parent3').remove()" />
...

等等。

答案 1 :(得分:2)

我认为您将i放入引用的字符串而不是parent中,因此它处于错误的范围级别(从概念上讲)。

for (var i=0;i<5;i++)
{
    $('parent' + i).insert(
      '<input type="button" value="Cancel" onclick="$(\'parent' + i +
         '\').remove()" />', {position: 'after'});
}

答案 2 :(得分:2)

你不需要i变量。如果要删除该输入的父项,请执行:

<input type="button" value="Cancel" onclick="this.parentNode.parentNode.removeChild(this.parentNode)" />

或者如果你真的想要,你可以:

for (var i=0;i<5;i++) {
    $('parent' + i).insert('<input type="button" value="Cancel" onclick="$(\'parent' + i + '\').remove()" />', {position: 'after'});
}