Переменная область в атрибуте onclick с Javascript - PullRequest
0 голосов
/ 12 мая 2009

Я использую Prototype и пытаюсь получить динамический доступ к переменной в цикле.

Код говорит лучше меня:

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

Проблема в том, что «я не определен», когда я нажимаю на любую из кнопок «Отмена».

Как изменить область видимости переменной, чтобы «i» сохранял правильное значение для каждой кнопки? Я не заинтересован в любой работе.

Ответы [ 3 ]

2 голосов
/ 12 мая 2009

Я думаю, что вы помещали i в строку в кавычках вместо parent, так что это было на неправильном уровне контекста (концептуально говоря).

for (var i=0;i<5;i++)
{
    $('parent' + i).insert(
      '<input type="button" value="Cancel" onclick="$(\'parent' + i +
         '\').remove()" />', {position: 'after'});
}
2 голосов
/ 12 мая 2009

вам не нужна эта переменная. если вы хотите удалить родителя этого ввода, выполните:

<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'});
}
2 голосов
/ 12 мая 2009

Вы можете сделать это так -

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()" />
...

и т. Д.

...