textarea name als id bei ie7
T-Rex
- html
1 suit0 Vinzenz Mai0 suit
0 Der Martin
0 T-Rex0 ichbinich0 Der Martin
0 MudGuard
0 Der Martin
0 MudGuard
Hi Leute
<html>
<head>
<title></title>
<script type='text/javascript'>
//[CDATA[
window.onload = function()
{
alert(document.getElementById('REVTEXT[1]').id);
}
//]]
</script>
</head>
<body>
<textarea name="REVTEXT[1]" id="REVTEXT_hidden[1]">
</textarea>
<div id="REVTEXT[1]">
</div>
</body>
</html>
Dieser Code gibt im Firefox REVTEXT[1] aus, im IE dagegen bekomme ich REVTEXT_hidden[1]. Warum? Scheint ein Bug im IE7 zu sein?
Ich würde das Problem gerne verstehen. Kann mir jemand helfen?
Gruß
T-Rex
Dieser Code gibt im Firefox REVTEXT[1] aus, im IE dagegen bekomme ich REVTEXT_hidden[1]. Warum?
Quirksmode.
Scheint ein Bug im IE7 zu sein?
Works as designed.
Es war mir so klar, dass so ein Post kommt :D.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type='text/javascript'>
//[CDATA[
window.onload = function()
{
alert(document.getElementById('REVTEXT[1]').id);
}
//]]
</script>
</head>
<body>
<textarea name="REVTEXT[1]" id="REVTEXT_hidden[1]"> </textarea>
<div id="REVTEXT[1]">
</div>
</body>
</html>
Noch mehr Ideen?
Gruß
T-Rex
Funktioniert bei mir einwandfrei - nehm ich die DTD weg, bekomm ich wieder REVTEXT_hidden[1]
IE7 und IE8
IE6 weigert sich dennoch standhaft.
Noch mehr Ideen?
Verzichte darauf, eine ID und ein Name-Attribut gleich zu benennen.
Ich danke dir überigens für diese Erkenntnis, sie hilft mir bei einem Problem mit dem External Interface von Flash :)
<object id="flash" width="100%" height="100%" data="/foo.swf" type="application/x-shockwave-flash">
<param name="movie" value="/foo.swf" />
<param name="wmode" value="transparent" />
</object>
Bei document.getElementById('flash') verweigert das External Interface seine Funktion im IE6 da das param-Element mit dem name="movie" nicht diese ID trägt und nicht bei Elemente dieselbe ID haben dürfen
Tauscht man die ID des object-Elements durch "movie" funktionierts auch im IE6, weil er fälschlicherweise das richtige Element findet :)
Hi there,
Verzichte darauf, eine ID und ein Name-Attribut gleich zu benennen.
Dann stänkert aber wieder der Validator...
Verzichte darauf, eine ID und ein Name-Attribut gleich zu benennen.
Dann stänkert aber wieder der Validator...
Warum sollte er? Die ID weicht doch auch jetzt schon vom Wert des name-Attributs ab.
Was spricht dagegen, dass Element A ein name-Attribut besitzt, dessen Wert sich nicht mit dem des id-Attributs von Element B deckt?
Hi there,
Was spricht dagegen, dass Element A ein name-Attribut besitzt, dessen Wert sich nicht mit dem des id-Attributs von Element B deckt?
nichts, ich dachte, es ging um das selbe Element...
Hi,
Verzichte darauf, eine ID und ein Name-Attribut gleich zu benennen.
Dann stänkert aber wieder der Validator...
Bei der verwendeten "ID" mit Wert "REVTEXT[1]" muß er das sowieso, wegen der [].
cu,
Andreas
Sehr komisch, bei mir ändert sich das verhalten mit und ohne doctype nicht und das im IE7.
Gruß
T-Rex
Hallo,
window.onload = function() { alert(document.getElementById('REVTEXT[1]').id); } //]]
<textarea name="REVTEXT[1]" id="REVTEXT\_hidden[1]"> </textarea> <div id="REVTEXT[1]"> </div>
Dieser Code gibt im Firefox REVTEXT[1] aus, im IE dagegen bekomme ich REVTEXT_hidden[1]. Warum? Scheint ein Bug im IE7 zu sein?
nicht nur:
http://webbugtrack.blogspot.com/2007/08/bug-152-getelementbyid-returns.html
Und ja: der Bug ist in IE8 im Kompatibilitätsmodus ebenfalls zu beobachten, im IE8-Modus dagegen nicht!
Freundliche Grüße
Vinzenz
Und ja: der Bug ist in IE8 im Kompatibilitätsmodus ebenfalls zu beobachten, im IE8-Modus dagegen nicht!
Bei mir scheinbar nicht (unter Windows 7).
Hallo,
<html>
<head>
<title></title>
<script type='text/javascript'>
//[CDATA[
window.onload = function()
{
alert(document.getElementById('REVTEXT[1]').id);
}
//]]
</script>
</head>
<body>
<textarea name="REVTEXT[1]" id="REVTEXT_hidden[1]">
</textarea>
<div id="REVTEXT[1]">
</div>
</body>
</html>
>
> Dieser Code gibt im Firefox REVTEXT[1] aus, im IE dagegen bekomme ich REVTEXT\_hidden[1]. Warum? Scheint ein Bug im IE7 zu sein?
ja, ein bekannter, und nicht erst im IE7. Den gibt's mindestens seit IE5.
> Ich würde das Problem gerne verstehen. Kann mir jemand helfen?
Der IE unterscheidet nicht konsequent zwischen name und id. Wenn du also mit getElementById() suchst, liefert er das erstbeste Element im DOM, das ein passendes id- oder auch name-Attribut hat.
Ciao,
Martin
--
Wer es in einem Unternehmen zu etwas bringen will, muss so tun, als hätte er es schon zu etwas gebracht.
vielen Dank für eure Posts!
Ich konnte das Problem auf meiner Seite lösen in dem ich den <div> über der <textarea> platziert hab. Die <textarea> ist bei mir sowieso display: none; spielt also keine Rolle wo die steht.
Der IE gibt das erstbeste Object zurück wenn sowohl id als auch name der gesuchten ID entspricht. Das aber auch nur bei bestimmten Elementen. Wäre die <textarea> ein <div> würde es keine Probleme geben.
Naja wie dem auch sei, mir ist geholfen und ich hoffe andere hängen nicht 2 Tage an einem Problem wie ich *seufz*
Danke und Gruß
T-Rex
Hallo,
Ich konnte das Problem auf meiner Seite lösen in dem ich den <div> über der <textarea> platziert hab.
Falsch - du hast das Problem nicht gelöst, sondern bist es unelegant umgangen. Angenommen in 2 Jahren änderst du etwas an der Seite, dann weisst du mit Sicherheit nicht mehr, dass zur Vermeidung von Problemen im IE das div vor der Textarea stehen muss. Verwende also idealerweise unterschiedliche id und name Werte.
vg ichbinich
Hi,
Der IE gibt das erstbeste Object zurück wenn sowohl id als auch name der gesuchten ID entspricht. Das aber auch nur bei bestimmten Elementen.
ja - nur bei solchen, die auch ein name-Attribut haben dürfen. Das ist mal wieder ein Punkt, den der IE sehr genau nimmt. Bei Elementen, die kein name-Attribut haben dürfen, ignoriert er es einfach.
Wäre die <textarea> ein <div> würde es keine Probleme geben.
Genau. Denn <div> darf kein name-Attribut haben, also ist es da egal.
Ciao,
Martin
Hi,
<textarea name="REVTEXT[1]" id="REVTEXT\_hidden[1]"> </textarea> <div id="REVTEXT[1]">
id = name [CS]
This attribute assigns a name to an element. This name must be unique in a document.
Bei Dir ist der Name, den Du per id="REVTEXT[1]" zuweist, nicht unique, da der Name "REVTEXT[1]" ein weiteres Mal verwendet wird (wenn auch nur für ein name-Attribut, aber immerhin).
Abgesehen davon ist die id "REVTEXT[1]" sowieso ungültig:
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
Eckige Klammern sind in der ID demnach nicht erlaubt (im name-Attribut der textarea schon, denn das ist nicht vom Typ name, sondern vom Typ CDATA).
cu,
Andreas
Hallo Andreas,
id = name [CS]
This attribute assigns a name to an element. This name must be unique in a document.
Bei Dir ist der Name, den Du per id="REVTEXT[1]" zuweist, nicht unique, da der Name "REVTEXT[1]" ein weiteres Mal verwendet wird (wenn auch nur für ein name-Attribut, aber immerhin).
das ist eine interessante Auslegung, impliziert sie doch, dass die gewählten Werte für IDs auch für name-Attribute nicht mehr verwendet werden sollen. Ich hatte das bisher immer verstanden als "This name must be unique [among IDs] in a document".
Immerhin ist es ja nichts Ungewöhnliches, für Formularelemente name und id gleich zu besetzen, so dass man einerseits label-Elemente mit dem for-Attribut verwenden kann, andererseits die Werte der Formularelemente im auswertenden Script unter demselben Identifier zur Verfügung hat.
Abgesehen davon ist die id "REVTEXT[1]" sowieso ungültig:
Klar. Das ist aber eine andere Baustelle.
So long,
Martin
Hi,
Immerhin ist es ja nichts Ungewöhnliches, für Formularelemente name und id gleich zu besetzen,
genausowenig wie es nichts Ungewöhnliches ist, für Formularelemente name und id unterschiedlich zu setzen (sonst könnte man nur einem Radiobutton pro Gruppe ein Label zuordnen ...)
cu,
Andreas