Ich möchte, dass dieses Javascript Optionen von 12 bis 100 in einer Auswahl mit id = "mainSelect" erstellt, da ich nicht alle Options-Tags manuell erstellen möchte. Können Sie mir einige Hinweise geben? Vielen Dank
function selectOptionCreate() {
var age = 88;
line = "";
for (var i = 0; i < 90; i++) {
line += "<option>";
line += age + i;
line += "</option>";
}
return line;
}
javascript
html
Jack the Ripper
quelle
quelle
mySelect.options[mySelect.options.length] = new Option('Text 1', 'Value1');
Antworten:
Sie können dies mit einer einfachen
for
Schleife erreichen:JS Fiddle Demo .
JS Perf vergleicht sowohl meine als auch die Antwort von Sime Vidas , weil ich dachte, dass seine etwas verständlicher / intuitiver aussieht als meine und ich fragte mich, wie sich das in der Implementierung niederschlagen würde. Laut Chromium 14 / Ubuntu 11.04 ist meins etwas schneller, andere Browser / Plattformen dürften jedoch unterschiedliche Ergebnisse erzielen.
Bearbeitet als Antwort auf einen Kommentar von OP:
JS Fiddle Demo .
Und schließlich (nach einiger Verzögerung ...) ein Ansatz, der den Prototyp des erweitert,
HTMLSelectElement
um diepopulate()
Funktion als Methode an den DOM-Knoten zu ketten :JS Fiddle Demo .
Verweise:
node.appendChild()
.document.getElementById()
.element.innerHTML
.quelle
innerText
anstattinnerHTML
Cross-Site - Scripting - Schwachstellen zu vermeiden. Was denkst du @DavidThomas?Bitte schön:
Live-Demo: http://jsfiddle.net/mwPb5/
Update: Da Sie diesen Code wiederverwenden möchten, ist hier die Funktion dafür:
Verwendung:
Live-Demo: http://jsfiddle.net/mwPb5/1/
quelle
Der prägnanteste und intuitivste Weg wäre:
Sie können auch den Namen und den Wert unterscheiden oder Elemente am Anfang der Liste mit zusätzlichen Parametern zu den verwendeten Funktionen
hinzufügen : HTMLSelect Element .add (Element [, vorher]);
neue Option (Text, Wert, defaultSelected, ausgewählt);
quelle
Ich empfehle nicht, DOM-Manipulationen innerhalb einer Schleife durchzuführen - dies kann in großen Datenmengen teuer werden. Stattdessen würde ich so etwas tun:
Sie können mehr über DocumentFragment auf MDN lesen , aber hier ist das Wesentliche:
quelle
Das einzige, was ich vermeiden würde, ist, DOM-Operationen in einer Schleife auszuführen, um wiederholtes erneutes Rendern der Seite zu vermeiden.
Bearbeiten: Die Funktion wurde entfernt, um zu zeigen, wie Sie das von Ihnen erstellte HTML einfach einem anderen Auswahlelement zuweisen können. So vermeiden Sie unnötige Schleifen, indem Sie den Funktionsaufruf wiederholen.
quelle
Siehe: Was ist der beste Weg, um einer Auswahl aus einem Array mit jQuery Optionen hinzuzufügen?
quelle
Wenn Sie ein neues
Option
Objekt erstellen , müssen zwei Parameter übergeben werden: Der erste ist der Text, der in der Liste angezeigt werden soll, und der zweite der Wert, der der Option zugewiesen werden soll.Sie weisen dieses
Option
Objekt dann einfach einem leeren Array-Element zu, zum Beispiel:quelle
Keine der oben genannten Lösungen hat bei mir funktioniert. Die Append-Methode hat beim Versuch keinen Fehler ausgegeben, aber mein Problem nicht gelöst. Am Ende habe ich mein Problem mit der Dateneigenschaft von select2 gelöst. Ich habe json verwendet und das Array erhalten und es dann in select2 element initialize angegeben. Für mehr Details können Sie meine Antwort unten im Beitrag sehen.
https://stackoverflow.com/a/41297283/4928277
quelle
Oft haben Sie eine Reihe verwandter Datensätze. Ich finde es einfach und ziemlich aussagekräftig,
select
diese zu füllen :Dies ersetzt vorhandene Optionen.
Sie können
selectEl.insertAdjacentHTML('afterbegin', str);
sie stattdessen oben hinzufügen.Und
selectEl.insertAdjacentHTML('beforeend', str);
um sie am Ende der Liste hinzuzufügen.IE11-kompatible Syntax:
quelle