Ambito di variabile nelle attributo onclick con JavaScript
-
21-08-2019 - |
Domanda
Sto usando Prototype e cercando di accedere dinamicamente una variabile in un ciclo.
Codice parla meglio di me:
for (var i=0;i<5;i++) {
$('parent' + i).insert('<input type="button" value="Cancel" onclick="$('parent' + i).remove()" />', {position: 'after'});
}
Il problema è che "i non è definita" quando si fa clic su uno dei pulsanti Annulla.
Come faccio a cambiare la portata variabile in modo che "i" mantiene il valore appropriato per ciascun pulsante? Io non sono interessato a qualsiasi arroud lavoro.
Soluzione
Credo che si stavano mettendo i
nella stringa tra virgolette, invece di parent
così è stato al livello sbagliato del campo di applicazione (concettualmente).
for (var i=0;i<5;i++)
{
$('parent' + i).insert(
'<input type="button" value="Cancel" onclick="$(\'parent' + i +
'\').remove()" />', {position: 'after'});
}
Altri suggerimenti
Si può fare in questo modo -
for (var i = 0; i < 5; i++) {
$('parent' + i).insert('<input type="button" value="Cancel" onclick="$(\'parent' + i + '\').remove()" />', {position: 'after'});
}
Si sarà reso in questo modo -
<input type="button" value="Cancel" onclick="$('parent1').remove()" />
<input type="button" value="Cancel" onclick="$('parent2').remove()" />
<input type="button" value="Cancel" onclick="$('parent3').remove()" />
...
e così via.
non è necessario che i variabili. se si desidera rimuovere controllante di tale ingresso, fare:
<input type="button" value="Cancel" onclick="this.parentNode.parentNode.removeChild(this.parentNode)" />
o se davvero vuole veramente, è possibile:
for (var i=0;i<5;i++) {
$('parent' + i).insert('<input type="button" value="Cancel" onclick="$(\'parent' + i + '\').remove()" />', {position: 'after'});
}