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.

È stato utile?

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'});
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top