IE akzeptiert name Attribute nicht
nimble
- javascript
0 Axel Richter0 nimble0 nimble
0 Cybaer0 Axel Richter0 Cybaer0 Axel Richter0 Cybaer
Hi
Ich plaziere mit JavaScript Bilder auf der Webseite.
Das Image Objekt besitzt volgende Eigenschaften
check_img = document.createElement("img");
check_img.src = "img/failed.gif";
check_img.name = 'failed';
check_img.setAttribute('id', 'ck_'+line.childNodes[1].text);
check_cell.appendChild(check_img);
Die ID funktioniert und kann wieiterverwendet werden. Der Nmae
allerdings wird nicht annerkannt, was ich mit document.getElementsByName('failed').length überprüft habe. Platziere ich auf der Seite ein HTML Bild mit dem Namen, wird dieses gezählt.
warum nicht?
THX
Hallo,
check_img = document.createElement("img");
check_img.src = "img/failed.gif";
check_img.name = 'failed';
check_img.setAttribute('id', 'ck_'+line.childNodes[1].text);
check_cell.appendChild(check_img);
>
> Die ID funktioniert und kann wieiterverwendet werden. Der Nmae
> allerdings wird nicht annerkannt, was ich mit document.getElementsByName('failed').length überprüft habe. Platziere ich auf der Seite ein HTML Bild mit dem Namen, wird dieses gezählt.
> warum nicht?
Das ist so, weil ist so ;-) Siehe auch <http://forum.de.selfhtml.org/archiv/2006/8/t134718/#m874222>.
Probiere es mit der Microsoft-eigene Methode document.[createElement(sTag)](http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/createelement.asp?frame=true).
~~~javascript
try { //probiere, ob die IE-Syntax von document.createElement angewendet werden kann:
check_img = document.createElement("<img name='failed'>");
} catch(e) { //sollte die IE-Syntax nicht möglich sein, probiere die Standardsyntax:
//alert(e);
check_img = document.createElement("img");
}
if (check_img) { //haben wir ein IMG-Objekt?
check_img.src = "img/failed.gif";
check_img.name = 'failed';
check_img.id = 'ck_'+line.childNodes[1].text;
check_cell.appendChild(check_img);
}
viele Grüße
Axel
Hi
check_img = document.createElement("<img name='failed'>");
Da ich nur für den IE programmiere, werd ich den Check nicht benötigen. Das zählen funktioniert jetzt wuderbar, die Namen scheinen vergeben.
Doch jetzt stehen wir an der nächsten Hürde wieder an:
~~~javascript
this.checkValue = function()
{
if (this.value!="")
{
check_img = document.getElementById('ck_'+this.name);
check_img.src = 'img/done.gif';
check_img.setAttribute('name', 'done');
}
else
{
check_img = document.getElementById('ck_'+this.name);
check_img.src = 'img/failed.gif';
check_img.name = 'failed';
}
}
schliesslich soll der Name nicht immer 'failed' bleiben. Wie Ihr seht habe ich beide mir bekannte zuweisungsvarianten versucht, aber keine greifft, ich hab immer gleich viele 'failed' IMG's :-(
[quote]
Microsoft JScript allows the name to be changed at run time. This does not cause the name in the programming model to change in the collection of elements, but it does change the name used for submitting elements.
The NAME attribute cannot be set at run time on elements dynamically created with the createElement method. To create an element with a name attribute, include the attribute and value when using the createElement method.
[/quote]
Ich muss das ganze wohl irgendwie anders lösen...
THX
Hi
Ich muss das ganze wohl irgendwie anders lösen...
Ja wenns einfach nicht geht - muss es halt kompliziert werden:
old_img = document.getElementById('ck_'+this.name);
new_img = document.createElement("<img name='done'>");
new_img.src = 'img/done.gif';
check_img.setAttribute('id', 'ck_'+this.name);
old_img.parentNode.replaceChild(new_img, old_img);
ersetzten statt repatieren lautet die Devise des 21 Jahrhunderts ;-)
THX
Hi,
try { //probiere, ob die IE-Syntax von document.createElement angewendet werden kann:
check_img = document.createElement("<img name='failed'>");
} catch(e) { //sollte die IE-Syntax nicht möglich sein, probiere die Standardsyntax:
Wobei ich hier eher zu Conditional Compilation greifen würde, als knapp die Hälfte der Browser bewußt in einen Fehler zu jagen. ;-)
Gruß, Cybaer
Hallo,
try { //probiere, ob die IE-Syntax von document.createElement angewendet werden kann:
check_img = document.createElement("<img name='failed'>");
} catch(e) { //sollte die IE-Syntax nicht möglich sein, probiere die Standardsyntax:Wobei ich hier eher zu Conditional Compilation greifen würde, als knapp die Hälfte der Browser bewußt in einen Fehler zu jagen. ;-)
Och nee!
So?:
/*@cc_on
/*@if (@_win32)
check_img = document.createElement("<img name='failed'>");
@else @*/
check_img = document.createElement("img");
check_img.name = 'failed';
/*@end
@*/
alert(check_img.name);
Das ist ja schlimmer als CSS-Hacks ;-).
viele Grüße
Axel
Hi,
Och nee!
Och doch. ;)
/*@if (@_win32)
Hmm, "@_jscript" stattdessen?
Das ist ja schlimmer als CSS-Hacks ;-).
Hey hey, nicht ausfallend werden! ;-)
Gruß, Cybaer
Hallo,
Hmm, "@_jscript" stattdessen?
Hmm, weiß ich nicht. Hat der Mac-IE das Problem mit HTMLElement.name auch?
viele Grüße
Axel
Hi,
Hmm, "@_jscript" stattdessen?
Hmm, weiß ich nicht. Hat der Mac-IE das Problem mit HTMLElement.name auch?
Keine Ahnung. %-)
"@_jscript" ist aber wohl immer sinnvoll, da es ja vielleicht mal auch Non-IEs geben könnte, die CC beherrschen. :)
Gruß, Cybaer