Hauptmenü

Untermenü

DOM-Manipulation JavaScript - Praxistutorial 2 - Inhalte einfügen

1. Die Abschnitte

2. Die Methode showDetails

Was jetzt kommt, ist nicht mehr besonders schwer, da wir ja einiges davon schon gemacht haben und nun damit auch vertraut sein sollten. Darum werde ich hier meine Erläuterungen auch auf das Wesentliche beschränken.


function showDetails ()
{
  var detail document.getElementById('details');
  while (detail.hasChildNodes())
  {
    var wech detail.firstChild;        
    detail.removeChild (wech);
  }    
  var ref_logo    xml.getElementsByTagName('logo')[0];
  var ref_adresse xml.getElementsByTagName('adresse')[0];
}

Erläuterung

Eigentlich sollte ich hierzu gar nichts mehr sagen. Wir entfernen zuerst in der while alle enthaltenen Kindknoten (wie schon bei den Links) und holen uns dann die Verweise auf die beiden XML-Tags.

3. Wenn ein Bild vorhanden ist

Absatz erzeugen


function showDetails ()
{
  ...
  if (ref_logo.firstChild)
  {
    var absatz           document.createElement ('p');        
    var logo_class       document.createAttribute ('class');        
    logo_class.nodeValue 'logo'
    absatz.setAttributeNode (logo_class);
  }
}

Erläuterung

Zunächst überprüfen wir, ob das XML-Tag überhaupt einen Bildnamen beinhaltet. Dabei suchen wir einfach nach dem ersten Kindknoten (der in diesem Fall ja ein Textknoten wäre) mittels if (ref_logo.firstChild). Was nun kommt, ist ja bekannt. Absatzknoten erzeugen, Attributknoten für class erzeugen, Klassennamen ('logo') in Attributknoten einhängen und zu guter Letzt Attributknoten in Absatzknoten einhängen.

Bild erzeugen


if (ref_logo.firstChild)
{
  ...
  var logo ref_logo.firstChild.nodeValue;
  var bild document.createElement ('img');
  bild.setAttribute ('src''pics/' logo);
  bild.setAttribute ('alt'logo);
  absatz.appendChild (bild);
  detail.appendChild (absatz);
}

Erläuterung

Aus nicht wirklich weltbewegendes. Zunächst holen wir uns mit var logo = ref_logo.firstChild.nodeValue; den Namen des Bildes. Anschließend kommt das übliche Procedere, Bild erzeugen (var bild = document.createElement ('img');), Pfad im src-Attribut anlegen (bild.setAttribute ('src', 'pics/' + logo);), alt-Attribut festsetzen, Bild in Absatz einhängen (absatz.appendChild (bild);) und damit man auch was zu sehen bekommt, den Absatz in das div-Element hineinsetzen (absatz.appendChild (bild);). Das war es auch schon.

4. Wenn eine Adresse vorhanden ist


if (ref_adresse.firstChild)
{
  var adresse ref_adresse.firstChild.nodeValue;        
  var absatz  document.createElement ('p');
  var text    document.createTextNode (adresse);
  absatz.appendChild (text);
  if (ref_logo.firstChild && ref_logo.firstChild.nodeValue)
  {
    var adr_class       document.createAttribute('class');
    adr_class.nodeValue 'einrueck';
    absatz.setAttributeNode (adr_class);
  }        
  detail.appendChild (absatz);
}

Also hierzu sage ich gar nichts mehr! Wer den Codeschnipsel immer noch nicht begreift, sollte doch noch mal ganz von vorne anfangen und dann später wiederkommen.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt