Horstlutz: IE6 kann getElementsByName nicht richtig

Hallo,

ich muss ein bestehendes (fehlerhaftes) Layout bearbeiten und kann das id-Attribut nicht verändern und nicht benutzen. Daher muss ich Elemente per name-Attribut auswählen. Das funktioniert in modernen Browsern auch gut, nur der IE6 kanns nicht. Hier das Minimal-Beispiel:

<html>
<head>
<script type=text/javascript>
  function OnLoad() {
    if (document.getElementsByName('uu').length > 0)
      document.getElementsByName('uu')[0].style.display='block';
    else
      alert('keine Elemente');
  }
</script>
</head>
<body onload="OnLoad()">
  <p style="display:none;" name="uu">Text</p>
</body>
</html>

Firefox schreibt den Text (wie's sein soll) und der IE6 bringt die Fehlermeldung.

Wie gesagt: klar würde ich normalerweise die id nehmen, aber die ist tabu.

Irgendwelche richtigen Ideen? Ich werde erstmal einen Workaround mit einem zusätzlichen div drumrum (bei dem ich mir die id dann schon aussuchen kann) bauen, aber das ist doch doof. Wieso kann der IE das nicht? In der SelfHTML Beschreibung von getElementsByName steht, dass das der IE ab Version 5 kann.

Btw: wenn ich das Tag zu
<p style="display:none;" name="uu" id="uu">
oder
<p style="display:none;" id="uu">
verändere (also das id-Attribut mit dem gleichen Wert eintrage), dann gehts mit getElementsByName().

Danke.

  1. hi,

    <p style="display:none;" name="uu">Text</p>

    seit wann hätte denn bitte p ein name-attribut?

    Firefox schreibt den Text (wie's sein soll) und der IE6 bringt die Fehlermeldung.

    dann hat m.E. ausnahmsweise mal der IE recht, und firefox macht's falsch.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. seit wann hätte denn bitte p ein name-attribut?

      Ei! Das macht Sinn. Hab total vergessen, dass name kein Universalattribut ist.

      Danke.

  2. Hi,

    ich muss ein bestehendes (fehlerhaftes) Layout bearbeiten und kann das id-Attribut nicht verändern und nicht benutzen. Daher muss ich Elemente per name-Attribut auswählen.

    wenn Du offensichtlich ein name-Attribut einfügen kannst, warum dann keine id - bzw. die vorhandene nutzen?
    Davon abgesehen: wenn Du ein Javascript einfügen kannst, dann solltest Du das "Übel" doch auch dort bekämpfen können, wo es Sinn macht - nämlich im CSS - und eine korrigierende CSS-Datei einfügen können, oder?

    Wenn das alles tatsächlich nicht gehen sollte, müßtest Du Dich wohl durch das DOM hangeln müssen und z.B. document.getElementsByTagName("p")[0] ansprechen.

    freundliche Grüße
    Ingo

  3. Hi,

    ich muss ein bestehendes (fehlerhaftes) Layout bearbeiten und kann das id-Attribut nicht verändern und nicht benutzen. Daher muss ich Elemente per name-Attribut auswählen.

    NAME ist dort falsch. Die Verarbeitung mittels JavaScript ist ungewiß und unterscheidet sich von Browser zu Browser.

    Coding: Darstellungswechsel - Un-/Sichtbare Elemente: Ein-/Ausklappen, Verstecken, Transparenz, Farbe sollte Dir Lösungsansätze aufzeigen.

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!