Dynamischer Table: Wieso funktioniert das mit IE 6.0 nicht?
Clemens
- javascript
Hallo Community
Ich versuche einen Table dynamisch zu generieren und versuche auch Attribute zu uebergeben. Folgendes Codesegment funktioniert einwandfrei mit FFox
mytable = document.createElement("table");
var attr = document.createAttribute("style");
attr.nodeValue = "table-layout:fixed";
mytable.setAttributeNode(attr);
Wenn ich es jedoch mit IE 6.0 probiere bekomme ich in der letzten Zeile die Fehlermeldung:
Error: member not found
Wie kann ich Attribute uebergeben, die von IE und FFox erkennt werden>
Danke Gruss
Clemens
hi,
var attr = document.createAttribute("style");
attr.nodeValue = "table-layout:fixed";
mytable.setAttributeNode(attr);Wenn ich es jedoch mit IE 6.0 probiere bekomme ich in der letzten Zeile die Fehlermeldung:
Error: member not found
setAttribute ist im IE oftmals problematisch.
idR. dann, wenn er noch eine "direkte" möglichkeit kennt, auf das entsprechende attribut zuzugreifen.
probier's doch mal über das style-objekt.
gruß,
wahsaga
Hi wahsaga
probier's doch mal über das style-objekt.
Danke fuer Deine Antwort werde das probieren. Nur wie mache ich das dann wenn ich eine Funktion bei z.b. onblur realisieren will? kann ich da auch irgendwie das setattribute umgehen?
Viele Gruesse
C
hi,
Nur wie mache ich das dann wenn ich eine Funktion bei z.b. onblur realisieren will? kann ich da auch irgendwie das setattribute umgehen?
http://forum.de.selfhtml.org/archiv/2005/5/t107039/#m664740
gruß,
wahsaga
hi,
Danke aber irgendwie schein ich zu bloed zu sein. Kann ich damit nicht nur HTML Element aber keine Attribute erzuegen? Weiters sagt es auf selfhtml das setAttribute und Create Arribute aber Version 6.0 im IE implementiert sein sollte ? Haut bei mir aber wie gesagt doch nicht ganz hin!
Gruss
Clemens
Danke aber irgendwie schein ich zu bloed zu sein. Kann ich damit nicht nur HTML Element aber keine Attribute erzuegen? Weiters sagt es auf selfhtml das setAttribute und Create Arribute aber Version 6.0 im IE implementiert sein sollte ? Haut bei mir aber wie gesagt doch nicht ganz hin!
wie gesagt du brauchst es nicht und da du ein bereits vorhandenes Attribut erzeugen willst solltest du darauf verzichten.
Im Prinzip machst du folgendes:
var style = new Object();
[HTML Table].style = style;
d.h. du willst ein style Objekt mit einem anderen Überschreiben das kann und darf nicht gehen, da jedes HTML Element ein style Objekt braucht.
Schau dir mal an was ein Attr Objekt ist:
var a = document.createAttribute('test');
alert( debugObj(a));
und im Gegensatz dazu das style Element:
a = document.createElement('table');
alert( debugObj(a.style));
function debugObj(obj)
{
var NL = '\n';
var str = "Debug Objekt: " + obj + NL;
var tab = "\t";
for(var i in obj)
{
var t = typeof obj[i];
var attr = obj[i];
var text = tab + i + '(' + t + ')';
if(t == 'function') text += "*";
else text += " =" + attr;
if(!t || !attr || !text) continue;
str += NL + text;
}
return str;
}
Struppi.
Ich versuche einen Table dynamisch zu generieren und versuche auch Attribute zu uebergeben. Folgendes Codesegment funktioniert einwandfrei mit FFox
Eiegntlich seltsam, denn
mytable = document.createElement("table");
Du erzeugst eine Tabelle
var attr = document.createAttribute("style");
aber eine Tabelle hat doch bereits die Eigenschaft style
attr.nodeValue = "table-layout:fixed";
mytable.setAttributeNode(attr);
und hier müßte eine Fehlermeldung kommen, dass du ein bereits vorhandenes (und sehr wichitges dazu) Attribut überschreiben willst.
Wie kann ich Attribute uebergeben, die von IE und FFox erkennt werden>
obj.attribut = 'xyz';
erzeugt ganz von alleine ein neues Attribut in allen Browsern die Object() kennen (also alle ab spätesten Netscape 2)
Und für den Event gibt es auch eine Vielzahl von Möglichkeiten, wobie ich am liebsten die Variante verwende:
obj.onblur = function()
{
....
};
Struppi.
hi,
Und für den Event gibt es auch eine Vielzahl von Möglichkeiten, wobie ich am liebsten die Variante verwende:
obj.onblur = function()
{
....
};
erzeugt die eigentlich, mal angenommen man würde mehrere objekte in einer schleife abhandeln o.ä., bei jedem mal eine neue funktion, auch wenn es sich jedes mal um den selbe code handelt?
gruß,
wahsaga
Und für den Event gibt es auch eine Vielzahl von Möglichkeiten, wobie ich am liebsten die Variante verwende:
obj.onblur = function()
{
....
};erzeugt die eigentlich, mal angenommen man würde mehrere objekte in einer schleife abhandeln o.ä., bei jedem mal eine neue funktion, auch wenn es sich jedes mal um den selbe code handelt?
Ich vermute ja (wobei ich mir auch vorstellen kann das es nicht so ist, aber JS in Bezug auf Speicherverbrauch zu optimieren ist eh für die Katz, das bisschen Code ist im Verhältnis zu dem was der Browser und dessen Objekte braucht sicher vernachlässigbar), aber in so einem Falle nehme ich dann natürlich
obj.onblur = onblur_func;
function onblur_func()
{
....
};
Struppi.