2009-05-12 19 views
0

Ich benutze Prototyp und versuche dynamisch auf eine Variable in einer Schleife zuzugreifen.Variabler Bereich im onclick-Attribut mit Javascript

-Code spricht besser als ich:

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

Das Problem ist, dass „ich nicht definiert ist“, wenn ich auf eine der Schaltflächen Abbrechen klicken.

Wie ändere ich den Variablenbereich, so dass "i" den richtigen Wert für jede Schaltfläche behält? Ich bin nicht an irgendeiner Arbeit interessiert.

Antwort

2

Ich glaube, Sie haben i in die Zeichenfolge in Anführungszeichen statt parent gesetzt, so war es auf der falschen Ebene des Umfangs (konzeptionell gesprochen).

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

Haben wir nicht einen hinzuzufügen haben ‚während $ tun (‘ parent1 ') für Prototype? Er muss es mit \ 'entkommen. – Kirtan

+0

Ja, ich denke du hast Recht –

2

Sie können es so machen -

for (var i = 0; i < 5; i++) { 

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

Es wird wie folgt wiedergegeben werden -

<input type="button" value="Cancel" onclick="$('parent1').remove()" /> 
<input type="button" value="Cancel" onclick="$('parent2').remove()" /> 
<input type="button" value="Cancel" onclick="$('parent3').remove()" /> 
... 

und so weiter.

1

brauchen Sie nicht, dass ich Variable. wenn Sie Elternteil dieser Eingabe entfernen möchten, tun:

<input type="button" value="Cancel" onclick="this.parentNode.parentNode.removeChild(this.parentNode)" /> 

oder wenn Sie wirklich wirklich wollen, können Sie:

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