Hannes Lau: Imagemaps dynamisch anlegen

Hallo Forum!

Für eine interaktive Karte würde ich gerne einer bestehenden ImageMap per JS Areas hinzufügen.

Ich versuche es mit

areaTag = document.createElement("area");
areaTag.setAttribute("shape","poly");
areaTag.setAttribute("alt",stadtteil.name);
areaTag.setAttribute("coords",stadtteil.coords);
areaTag.setAttribute("href","#");
areaTag.id = stadtteil.id+"Area";
this.map.appendChild(areaTag);

wobei this.map eine mit

this.map = document.createElement("map");
this.map.setAttribute("name","hhMap");
this.map.id = "hhMap";
this.node.appendChild(this.map);

angelegte Imagemap ist.

Das <img> erzeuge ich ebenfalls per JS mit

this.mainMapImage = document.createElement("img");
...
this.mainMapImage.useMap = this.map.id

Leider funktioniert das ganze im IE nicht. Die neuen Areas werden nicht linkaktiv, warscheinlich werden sie gar nicht angelegt... Im Firefox funktioniert alles bestens. Hat jemand eine Idee oder findet den Fehler in meinem Code?

Einen netten Gruß
Hannes Lau

  1. hi,

    setAttribute macht im IE immer wieder probleme - insb. dann, wenn man auf eine attributeigenschaft auch gleich über objekt.attributname zugreifen kann, haut es mit setAttribute idR. nicht hin.

    areaTag = document.createElement("area");
    areaTag.setAttribute("shape","poly");
    areaTag.setAttribute("alt",stadtteil.name);
    areaTag.setAttribute("coords",stadtteil.coords);
    areaTag.setAttribute("href","#");

    probiere mal, hier statt setAttribute direkt areaTag.shape = "poly", areaTag.alt = stadtteil.name, etc. zu verwenden.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo!

      und vielen Dank für die rasche und hilfreiche Antwort!!

      setAttribute macht im IE immer wieder probleme - insb. dann, wenn man auf eine attributeigenschaft auch gleich über objekt.attributname zugreifen kann, haut es mit setAttribute idR. nicht hin.

      Das war schonmal die Hälfte meines Problems :) Vielen Dank! Der Code ist jetzt auch hübscher ;)

      Ausserdem habe ich

      this.mainMapImage.useMap = this.map.id

      durch

      this.mainMapImage.useMap = "#"+this.map.id

      ersetzt.

      Mit _beiden_ Änderungen ging es, mit beiden einzelnen nicht.

      Einen netten Gruß
      Hannes