2010-11-29 9 views
1

Ich versuche, 10 Optionstags in einer Auswahl anzuzeigen. Der notaDt.text() ist der aktuelle Wert. Wenn dieser Wert also mit dem i übereinstimmt, wird ein "ausgewählt" angezeigt.jQuery: Verkettungsergebnisse in undefined

var n, select, option;    
for(var i=10; i>=1; i--) { 
    n = notaDt.text(); 
    select = (i == n ? "selected" : ""); 
    option = option + '<option value="' + i + '" ' + select + ' >' + i + '</option>'; 
} 

Das Problem ist mit der option = Option + ... Es gibt "undefiniert" wenn es heißt (wie unten zu sehen), aber alles funktioniert.

http://img821.imageshack.us/img821/2951/screenshot20101129at749.png

Gibt es andere Methoden Verkettung ich versuchen könnte diese Nachricht nicht zu bekommen? Vielen Dank!

Antwort

4

Sie müssen sich mit einem leeren String für option, wie diese starten:

var n, select, option = ""; 

Ansonsten ist das erste Mal, wenn Sie mit option verketten (an diesem Punkt sein undefined) Sie "undefined" erhalten Sie Ihre Zeichenfolge beginnen mit , wenn Sie das ToString-Ergebnis von undefined erhalten.

+0

Danke euch beiden. Nick antwortete zuerst, also werde ich ihm den Sieg geben, sobald ich kann. – Norbert

+0

@Norbert, Nick * immer * antwortet zuerst, aber diesmal um 6 Sekunden! :) –

+0

@Jacob Relkin: Und mit viel Genauigkeit :) – Sarfraz

3

Sie müssen option auf eine anfängliche leere Zeichenfolge setzen - wie folgt aus:

var n, select, option = ""; 

Und warum verwenden nicht += statt option = option + - das ist nur meine Meinung.

0

Zunächst ist die Option bis zur ersten Verkettung nicht definiert. Warum stellst du es nicht zuerst auf eine leere Zeichenfolge?

var n, select; 
var option = ""; 
for(var i=10; i>=1; i--) { 
    n = notaDt.text(); 
    select = (i == n ? "selected" : ""); 
    option = option + '<option value="' + i + '" ' + select + ' >' + i + '</option>'; 
}