我正在使用Prototype并尝试动态访问循环中的变量。
代码说得比我好:
for (var i=0;i<5;i++) {
$('parent' + i).insert('<input type="button" value="Cancel" onclick="$('parent' + i).remove()" />', {position: 'after'});
}
当我点击任何取消按钮时,问题是“我没有定义”。
如何更改变量范围,以便“i”为每个按钮保留正确的值? 我对任何工作都不感兴趣。
答案 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'});
}