kann man das abkürzen?
Klar, einfach eine Funktion schreiben:
function createElement(wo, e)
{
if(!wo) wo = window.document;
if(!e) return alert ('usage: createElement(document, "element")');
var o = wo.createElement(e);
if(!o) return alert('Konnte Element ' + e + ' nicht erzeugen!');
for(var i = 2; i < (arguments.length ); i++,i++)
o.setAttribute(arguments[i], arguments[i+ 1]);
return o;
}
var form = createElement(null, 'form', 'action', 'script.php', 'method', 'post');
var input = createElement(null, 'input', 'type', 'text', 'value', 'mein_wert');
form.appendChild(input);
Und noch was zu innerHTML, probier mal das folgende aus:
window.onload = function()
{
var t1 = new Date();
for(var i = 0; i < 100; i++)
{
// dom();
inner();
}
var t2 = new Date();
alert(t2 - t1);
}
function dom()
{
var form = createElement(null, 'form', 'action', 'script.php', 'method', 'post');
var input = createElement(null, 'input', 'type', 'text', 'value', 'mein_wert');
form.appendChild(input);
window.document.body.appendChild(form);
}
function inner()
{
var html = '<form action="script.php" method="post"> <input type="text" value="mein_wert"></form>';
window.document.body.innerHTML += html;
}
Die innerHTML Funktion braucht bei mir ca. 10,000 ms die DOM Methoden ca. 250 ms. Das finde ich durchaus ein schlagendes Argument für diese. Auch wenn ich oft gerne innerHTML benutze weil es wirklich einfacher ist, aber je nachdem wie komplex deine HTML Struktur ist, ist eine Funktion u.U. besser, da du dadurch auch eher Fehler vermeiden kannst.
Struppi.