phil746: getElementsByName Problem

Hallo allerseits,

mit unten stehendem Code versuche ich die Anzahl der Elemente mit dem Namen "bla" auszugeben, im Alert fenster steht dann allerdings nur 0. Wenn ich jetzt aber statt dem Namen die ID angebe und trotzdem getElementsByName verwende, funktioniert es.
Das kann doch nicht sein oder??

<html>
<head>
<title>Untitled Document</title>
<script language="JavaScript" type="text/JavaScript">
function test()
{
 anzahl = document.getElementsByName("bla").length;
 alert(anzahl);
}
</script>
</head>

<body>
<span name="bla">test</span>
<p name="bla" onClick="test();">test2</p>
</body>
</html>

  1. hi,

    <span name="bla">test</span>

    hat span ein name-attribut?

    <p name="bla" onClick="test();">test2</p>

    hat p ein name-attribut?

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. Besten Dank für die schnelle Antwort euch beiden.

  2. hallo phil746,

    folgendes:

    der name bzw. die id eines elementes in der seite sollte eindeutig sein. das heisst sie darf nur einmal vorkommen.

    bei deinem code hat nur der name des p-elementes gültigkeit, weil dieses am schluss geparst wurde. somit kannst du mit getElementsByName() nur auf des letzte element mit dem namen "bla" zugreifen.

    die funktion getElementsByName() liefert dir dann ein gültiges objekt zurück. somit erhälst du mit objekt.length die anzahl der eigenschaften dieses objektes, nicht umbedingt das was du wolltest.

    gruss LenaLuna

    1. hi,

      der name bzw. die id eines elementes in der seite sollte eindeutig sein. das heisst sie darf nur einmal vorkommen.

      id ja, name nein (im normalfall).

      bei deinem code hat nur der name des p-elementes gültigkeit, weil dieses am schluss geparst wurde.

      nein, der hat genauso wenig gültigkeit wie der des span - weil p und span kein attribut name besitzen.

      gruß,
      wahsaga

      --
      "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    2. Hallo LenaLuna,

      der name bzw. die id eines elementes in der seite sollte eindeutig sein. das heisst sie darf nur einmal vorkommen.

      Bei IDs hast du Recht, die müssen eindeutig sein, das ist ja das Wesen einer Identität. Beim Namen-Attribut aber nicht, deswegen heißt die eine Methode ja auch getElement_s_ByName (Plural), die andere aber getElement_ById (Singular). Bei Radiobuttons nutzt HTML die Mehrfachverwendung des Namen-Attributs sogar dazu aus, dass das Anwählen des einen die anderen gleichen Namens aussschaltet.

      Am Rande sei bemerkt: Seltene Namen schützen aber auch nicht unbedingt vor Identitätskrisen.

      Gruß Gernot