Ashura: Performance: write<->appendChild

Beitrag lesen

Hallo molily.

The write()-Methode gibt einfach nur Zeichendaten aus; an welcher Stelle (sprich: in welchem Umfeld) dies geschieht, ist ihr ziemlich egal.

Im Gegentum, es ist völlig determiniert, an welcher Stelle dies geschieht.

Je nachdem, wo der betreffende Scriptblock notiert wurde, kann dies der Fall sein, ja.

Ich verstehe deinen Kritikpunkt nicht.

Was ist wohl performanter?

<body>  
  <script type="text/javascript">  
    [code lang=javascript]var myURIs = ['Foo', 'Bar', 'Baz', 'Qux'];  
  
    document.write('<ul>');  
  
    for (var i = 0; i < myURIs.length; i++) {  
      document.write('<li><a href="/' + myURIs[i] + '">' + myURIs[i] + '</a></li>');  
    }  
  
    document.write('</ul>');

</script>
</body>[/code]

Versus:

<head>  
  <script type="text/javascript">  
    [code lang=javascript]window.addEventListener('load', function() {  
      var myUl = document.createElement('ul');  
      var myURIs = ['Foo', 'Bar', 'Baz', 'Qux'];  
  
      for (var i = 0; i < myURIs.length; i++) {  
        var myA = document.createElement('a');  
            myA.href = '/' + myURIs[i];  
            myA.appendChild(document.createTextNode(myURIs[i]));  
  
        var myLi = document.createElement('li');  
            myLi.appendChild(myA);  
  
        myUl.appendChild(myLi);  
      }  
  
      document.body.appendChild(myUl);  
    }, false);

</script>
</head>
<body></body>[/code]

Ob ich jetzt ein script-Element im body notiere, wo ich document.write() aufrufe, oder mit appendChild Elemente an den body anhänge, der Elementenbaum kann letztlich derselbe sein.

Natürlich, darum ging es mir auch gar nicht, sondern rein um die Performance. (Das Maß aller Dinge ist hier Jacks Performancetest.)

Der entscheidende Punkt ist doch eher, dass document.write() eben nur dort Elemente hinschreiben kann, wo das zugehörige script-Element notiert ist (Netscape 4 mit seinen vielen documents mal außen vor).

Das kommt noch hinzu, dürfte für Jack aber nicht relevant sein.

Einen schönen Sonntag noch.

Gruß, Ashura

--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
mathbr:del.icio.us/ mathbr:w00t/