Sind add() und appendChild (), das gleiche für select-DOM-Objekte?
Dem ich arbeite, eine kleine web-Anwendung, ändert sich der Inhalt einer select-drop-down.
Ich Frage mich, ob appendChild() und add (), die beide die gleiche Aufgabe, die auf einer select-DOM-Objekt in JavaScript?
var someSelect = document.getElementById('select-list');
var newOption = document.createElement('option');
someSelect.appendChild(newOption);
//The above is the same as the following?
someSelect.add(newOption);
Du musst angemeldet sein, um einen Kommentar abzugeben.
In diesem Fall, ich glaube, Sie würden die gleiche Aufgabe.
add( )
ist vorgesehen, speziell über dieHTMLSelectElement
interface speziell zum hinzufügen von Optionen zu einerselect
element und hat ein paar zusätzliche Optionen (wie z.B. einen optionalen index, an dem hinzufügen von neuenoption
usw.).appendChild( )
geben Sie eine gerade Anhängen der Kind-Knoten.Watch out für die verschiedenen Implementierungen der beiden Methoden cross-browser: ich denke, das wäre Ihr größter Schwachpunkt. Wenn ich mich Recht erinnere, die IEs würde dazu führen, Probleme beim Anhängen Kindern zu
select
s, so möchten Sie vielleicht, umadd
wenn diese Methode existiert und fallen zurück aufappendChild
.Wenn Sie sicher sein möchten, cross-browser-Kompatibilität, wenn Manipulation Optionen innerhalb einer
<select>
, der sicherste Weg ist die Verwendung deroptions
Eigenschaft, und füllen Sie es mitOption
Objekte. Die folgenden altehrwürdige Methode funktioniert in allen skriptfähigen Browsern seit den späten 1990er Jahren:options[options.length]
wäre besser geschrieben alsoptions.push()
options
ist nicht einArray
ist und nicht einpush()
Methode.Ich denke, es sollte gleichwertig sein, aber hier finden Sie eine Frage, die Bemerkungen der verschiedenen Implementierungen, wenn Sie versuchen zu arbeiten mit der option Gruppen:
SELECT-box: IE-Element Hinzugefügt wird OptGroup statt root. FF ok
IE schlägt fehl, zum hinzufügen einer neuen option "in der Wurzel", wenn es bereits einen Gruppe innerhalb der select-element.