Citat:
Ursprungligen postat av
Paer86
Tack så mycket för svaret. Mycket hjälpsamt, hade inte kunnat lista/googla ut det själv. Hade ingen aning om att document.write inte är att föredra, förstår det nu bättre när jag läst vidare. Jag följer en youtube-skola om HTML5 och jag börjar inse att snubben kanske inte är expert.
Vad rekommenderas istället för document.write? Som i det här exemplet, hur kan jag få sidan att skriva ut alla elementen i en klass om de nu lagrats med querySelectorAll?
dw har ju den för- och nackdelen (så att säga) att den skriver ut text precis där den körs i dokumentet. Skriver man något i ett färdigladdat dokument så blankas det som sagt ut först, vilket blir det givna resultatet om man kör
dw i en
window.onload.
Om du istället gör det innan dokumentet laddats klart och stängts, så skriver du helt enkelt ut data i dokumentet, vilket kommer att gå fint. Dokumentet stängs sedan automatiskt när DOMen laddats klart (eventet
DOMContentLoaded).
Så om du, precis innan
</body> (stängningen) kör funktionen borde det gå bra (bara du definierat den innan såklart):
[PHP]<script>
getStuff();
</script>
</body>[/PHP]
Om du vill lägga till data på sidan efter att dokumentet laddats klart kan du använda några alla härliga metoder för manipulation av strukturen som finns.
[PHP]
<script>
// Skicka in ett klassnamn och ett mål för där info skall läggas
function printElementsWithClassName(className, target) {
var elements = document.getElementsByClassName(className), elem
, doc = document, item
, list = doc.createElement("ul"); // Skapa ul
for (var idx=0, len=elements.length; idx<len; ++idx) {
elem = elements[idx];
item = doc.createElement("li"); // Skapa li
// sätt li:ns innehåll till info om nodens namn och dess html
item.innerHTML = "tag: " + elem.nodeName +", html: " + elem.innerHTML;
list.appendChild(item); // Lägg till li till skapad ul
}
if (!target) {target = doc.body;} // Om man inte angav någon target, använd body
target.appendChild(list); // Lägg till skapade ul sist i ett element (target)
}
printElementsWithClassName("tuna");
</script>
</body>
[/PHP]
Den här kan man helt klart även köra efter
onload och dylikt.
Dessa två funktioner för att skapa och lägga in noder användes här, men det finns ju många fler:
createElement:
https://developer.mozilla.org/en-US/docs/Web/API/document.createElement
appendChild:
https://developer.mozilla.org/en-US/docs/Web/API/Node.appendChild
/p