2016-11-15 2 views
1

Ich versuche, eine Zeichenfolge in eine Funktion mithilfe des onclick-Ereignisses zu übergeben. Wenn ich jedoch auf den Link klicke, gibt die Variable in der Funktion nichts zurück. Es ist leer. Ich habe keine Probleme, wenn ich eine Zahl als Argument übergebe und das in der Warnung ohne Probleme angezeigt wird. Ich bin mir nicht sicher, was ich falsch mache.Variable, die eine Zeichenfolge enthält, ist leer, wenn sie durch eine onclick-Funktion übergeben wurde

for (var j=0;j<current_order.length;j++){ 
    var note_id = "note" + (j+1); 
    text = text + "<button onClick= 'deleteItemfromOrder("+j+")'>Delete</button>"; 
    text = text + "<a id = '"+note_id+"' onClick= 'toggleNote("+note_id+")'>Notes</a>"; 
    alert(text); 
} 

Dies ist die Funktion, die ich zu passieren versuche note_id zu:

text = text + "<a id = '"+note_id+"' onClick= 'toggleNote('"+note_id+"')'>Notes</a>"; 

:

function toggleNote(showHideDiv) { 
    alert(showHideDiv); 
} 

Ich habe mehrere Methoden versucht, die Zeichenfolge als Argument an die Funktion EG passieren und

text = text + "<a id = '"+note_id+"' onClick= 'toggleNote(\'"+note_id+"\;)'>Notes</a>"; 

H jedes Mal, wenn die Zeichenfolge in der Funktion auf der anderen Seite leer erscheint. Es gibt keine Probleme, wenn ich eine Zahl zB passieren:

text = text + "<a id = '"+note_id+"' onClick= 'toggleNote("+2+")'>Notes</a>"; 
+0

auch sagen kann, jemanden zu tun haben, warum dieses Downvoted wurde? –

Antwort

1

Ihr Problem ist, dass Sie Anführungszeichen fehlen, Zahlen Anführungszeichen nicht benötigen, wie in

onclick='toggleNote(3)' 

aber ein String tut

onclick='toggleNote("string")' 

auch die gleichen Anführungszeichen entweder nicht arbeiten

onclick='toggleNote('string')' 

das heißt, Sie

text = text + "<a id = '"+note_id+"' onClick= 'toggleNote(\""+note_id+"\")'>Notes</a>"; 

Aber wirklich, was Sie tun sollten, ist es, Elemente erstellen

for (var j = 0; j < current_order.length; j++) { 
    (function(i) { 
     var btn = document.createElement('button'); 
     var anc = document.createElement('a'); 

     btn.addEventListener('click', function() { 
      deleteItemfromOrder(i); 
     }); 

     btn.textContent = 'Delete'; 

     anc.addEventListener('click', function() { 
      toggleNote("note" + (i+1)) 
     }); 

     anc.textContent = 'Notes'; 
    })(j); 
} 
+0

oder referenzieren Sie einfach die ID und sorgen Sie sich nicht darum, die Zeichenfolge zu übergeben. – epascarello

+0

Das funktioniert großartig. Überall, wo ich schaute, aber sie verwenden einfache Anführungszeichen und Anführungszeichen wie Anführungszeichen für Strings in Javascript. Woher weiß ich, wann und wo die verschiedenen zu verwenden und wann zu verwenden, ich denke, es heißt (diese \ Backslashes). –

+0

@FKhan - Wenn Sie ein Attribut haben und dieses Attribut einfache Anführungszeichen verwendet, müssen alle darin enthaltenen Elemente doppelte Anführungszeichen verwenden. Andernfalls wird das Attribut beim Hinzufügen eines einfachen Anführungszeichens geschlossen, und da Ihre Zeichenfolge in JavaScript mit doublequotes definiert ist Escapezeichen, um das Zeichenfolgenliteral nicht zu schließen. – adeneo

Verwandte Themen