Область переменной в атрибуте onclick с помощью Javascript

StackOverflow https://stackoverflow.com/questions/851847

  •  21-08-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

и так далее.

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

<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'});
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top