Forum Doku Wiki Blog

Forumsarchiv 2005, November
setAttributeNode() - Probleme mit divs und dem IE

archivierte Beiträge lesen

  1. (JAVASCRIPT) setAttributeNode() - Probleme mit divs und dem IE von Julian, 18. 11. 2005, 15:03

setAttributeNode() - Probleme mit divs und dem IE

Der folgende Beitrag wurde am 18. 11. 2005, 15:03 Uhr von Julian veröffentlicht.

Hallo liebe Leute,
Ich habe ein kleines Problem mit dem dynamischen einfügen von divs im IE.
Folgender Code funktioniert problemlos im Firefox aber nicht im IE (Windows, Version 6.x)


var punkt = document.createElement("div");
var attribut = document.createAttribute("style");
      attribut.nodeValue = "background-color: black; width: 20px; height: 30px;";
      document.getElementById("rahmen").appendChild(punkt);
      document.getElementsByTagName("div")[1].setAttributeNode(attribut);


der Explorer gibt als Fehler "Mitglied nicht gefunden" aus.
Setze ich nun aber statt ...createElement("div")... ...createElement("hr")... ein und ändere die Attribute entsprechend ab meckert der IE nicht mehr und gibt eine Trennlinie aus.
Hat jemand eine Ahnung woran das liegen könnte?
mfg Julian

setAttributeNode() - Probleme mit divs und dem IE

Der folgende Beitrag wurde am 18. 11. 2005, 15:10 Uhr von Rouven veröffentlicht.

Hi,

na ja, laut Self-HTML funktioniert createAttribute beim Internet-Explorer nicht.
Ich habe mir eine kleine setStyle-Funktion gebaut, die unterscheidet:
if (document.createAttribute)
 ...
else
 element.style.backgroundColor = ...
So nach dem Schema etwa, also über das Style-Object.

MfG
Rouven

--
-------------------
ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(

setAttributeNode() - Probleme mit divs und dem IE

Der folgende Beitrag wurde am 18. 11. 2005, 15:23 Uhr von Julian veröffentlicht.

Hallo Rouven,

> na ja, laut Self-HTML funktioniert createAttribute beim Internet-Explorer nicht.
klingt logisch, hab ich wohl übersehen.
Aber:

var punkt = document.createElement("hr");
var attribut = document.createAttribute("width");
      attribut.nodeValue = "30";
      document.getElementById("rahmen").appendChild(punkt);
      document.getElementsByTagName("hr")[0].setAttributeNode(attribut);

funktioniert im IE perfekt
mfg Julian

setAttributeNode() - Probleme mit divs und dem IE

Der folgende Beitrag wurde am 18. 11. 2005, 15:27 Uhr von Julian veröffentlicht.

Hallo Rouven,
Danke übrigens für deine (sehr-) schnelle Antwort.
Ich hab mir deinen Hinweis auf style.setAttribute mal zu Gemüte geführt. Ist in meinem Fall sowieso besser geeignet als im DOM-Baum rumzupfuschen. Danke auch hierfür.
mfg Julian

setAttributeNode() - Probleme mit divs und dem IE

Der folgende Beitrag wurde am 18. 11. 2005, 16:22 Uhr von molily veröffentlicht.

Hallo,

> Ich habe mir eine kleine setStyle-Funktion gebaut, die unterscheidet:
> if (document.createAttribute)
> ...
> else
> element.style.backgroundColor = ...

Wieso auch immer diese Unterscheidung notwendig ist - die Methode über createAttribute ist umständlich und wie gesagt nicht browserübergreifend. Sie ist beim Setzen von Styles weitesgehednd unnötig, der Zugriff über style sollte ausreichen.

Mathias

setAttributeNode() - Probleme mit divs und dem IE

Der folgende Beitrag wurde am 18. 11. 2005, 16:25 Uhr von Rouven veröffentlicht.

Stimmt schon, sagen wir meine Methode ist eigentlich auch kein setStyle sondern ein setAttribute und filtert noch auf einiges mehr.

MfG
Rouven

--
-------------------
ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(

setAttributeNode() - Probleme mit divs und dem IE

Der folgende Beitrag wurde am 18. 11. 2005, 16:44 Uhr von Struppi veröffentlicht.

>
> var punkt = document.createElement("div");
> var attribut = document.createAttribute("style");
>       attribut.nodeValue = "background-color: black; width: 20px; height: 30px;";
>       document.getElementById("rahmen").appendChild(punkt);
>       document.getElementsByTagName("div")[1].setAttributeNode(attribut);
>


createAttribute und setAttribute sind hier absolut überflüssig, da ein DIV Element diese Attribute bereits hat. D.h. du versuchst hier ein Browserinternes Attribut zu überschreiben was offensichtlich nit jeder Browser mag. Zumal nicht in dieser Form, da ein Style ja keinen string als Attribute hat, sonder widerrum Attribute.

Mach es einfach so:
var punkt = document.createElement("div");
punk.style.backgroundColor = 'black';
punk.style.width = '20px';
punk.style.height = '30px;';

Das funktioniert immer.

Struppi.
--
Javascript ist toll

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4