Ich habe schnell eine Funktion erstellt, die dies erreichen kann. Es ist möglicherweise nicht der beste Weg, dies zu tun, aber es funktioniert einfach und sollte browserübergreifend sein. Bitte wissen Sie auch, dass ich KEIN Experte für JavaScript bin, daher sind alle Tipps großartig :)
Reine Javascript-Lösung zum Erstellen von Elementen
function createElement(){
var element = document.createElement(arguments[0]),
text = arguments[1],
attr = arguments[2],
append = arguments[3],
appendTo = arguments[4];
for(var key = 0; key < Object.keys(attr).length ; key++){
var name = Object.keys(attr)[key],
value = attr[name],
tempAttr = document.createAttribute(name);
tempAttr.value = value;
element.setAttributeNode(tempAttr)
}
if(append){
for(var _key = 0; _key < append.length; _key++) {
element.appendChild(append[_key]);
}
}
if(text) element.appendChild(document.createTextNode(text));
if(appendTo){
var target = appendTo === 'body' ? document.body : document.getElementById(appendTo);
target.appendChild(element)
}
return element;
}
Mal sehen, wie wir das machen
<select name="drop1" id="Select1">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
So funktioniert das
var options = [
createElement('option', 'Volvo', {value: 'volvo'}),
createElement('option', 'Saab', {value: 'saab'}),
createElement('option', 'Mercedes', {value: 'mercedes'}),
createElement('option', 'Audi', {value: 'audi'})
];
createElement('select', null,
{id: 'Select1', name: 'drop1'},
[options[0], options[1], options[2], options[3]],
'body'
);
Das sind die Parameter
createElement('tagName', 'Text to Insert', {any: 'attribute', here: 'like', id: 'mainContainer'}, [elements, to, append, to, this, element], 'body || container = where to append this element');
Diese Funktion ist geeignet, wenn Sie viele Elemente anhängen müssen. Wenn es eine Möglichkeit gibt, diese Antwort zu verbessern, lassen Sie es mich bitte wissen.
bearbeiten:
Hier ist eine funktionierende Demo
Dies kann sehr individuell an Ihr Projekt angepasst werden!
document.createElement
undelement.appendChild