Sonic: getElementsByName funzt nicht

Hallo,

ich möchte die Style-Eigenschaft mehrerer Textfelder ändern.
Dafür habe ich folgende Funktion, die ich leider nicht zum laufen bekomme..

function dummy(nr) {
 var name = "name"+nr;
 var vorname = "vorname"+nr;
 var email = "email"+nr;

var textfeld = document.getElementsByName(name);
 textfeld.style.backgroundColor = "#FFFFFF";
 //usw.

}
..
..
 <td><input type="Text" name="name1"></td>
 <td><input type="Text" name="vorname1"></td>
 <td><input type="Text" name="email1"></td>
..
..
<a href="javascript:dummy(<? echo $nr ?>)">....
..
..

Was mache ich falsch? Wenn ich das hier benutze, dann funktioniert es: document.form.name1.style.backgroundColor = "#FFFFFF";

Aber wie bastlere ich ein Aufruf ohne festen Namen zu benutzen, sondern mit Variablen?
NAME = "name"+nr;
document.form.NAME.style.backgroundColor = "#FFFFFF";
Wie geht das?  |__so nicht
Mit
document.getElementsByName("name1").style.backgroundColor = "#FFFFFF";
geht es bei mir gar nicht.

Danke

  1. hi,

    Aber wie bastlere ich ein Aufruf ohne festen Namen zu benutzen, sondern mit Variablen?
    NAME = "name"+nr;
    document.form.NAME.style.backgroundColor = "#FFFFFF";
    Wie geht das?  |__so nicht

    http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Was mache ich falsch? Wenn ich das hier benutze, dann funktioniert es: document.form.name1.style.backgroundColor = "#FFFFFF";

    Du überiehst das s im Funktionsnamen.

    Aber wie bastlere ich ein Aufruf ohne festen Namen zu benutzen, sondern mit Variablen?
    NAME = "name"+nr;
    document.form.NAME.style.backgroundColor = "#FFFFFF";
    Wie geht das?  |__so nicht

    Aber so:
    document.form[NAME].style.backgroundColor = "#FFFFFF";

    Struppi.

    1. Aber so:
      document.form[NAME].style.backgroundColor = "#FFFFFF";

      Struppi.

      Danke

  3. Moin!

    Mit
    document.getElementsByName("name1").style.backgroundColor = "#FFFFFF";
    geht es bei mir gar nicht.

    In einem Dokument können mehrere Elemente den gleichen Namen haben. Deshalb liefert dir getElementsByName ein Array mit allen Elementen, die den gewünschten Namen haben (bemerke: "Elements" ist Plural. Im Gegensatz zu getElementById, da ist "Element" nur Singular, weil eine ID im Dokument nur ein einziges Mal auftauchen darf).

    Mit dem normalen Arrayzugriff kannst du dann ganz einfach auf das erste, zweite, dritte Element mit dem gewünschten Namen zugreifen.

    Für Formularelemente gibt es allerdings noch eine zweite Zugriffsmethode, da die Browser alle Formularelemente in einem eigenen DOM-Zweig zusammenfassen und zur Verfügung stellen. Folge dazu dem Link von wahsaga, in den Beispielen wird auch auf die Zugriffsform mit variablem Namen eingegangen.

    - Sven Rautenberg

    --
    My sssignature, my preciousssss!
  4. Huhuu,

    function dummy(nr) {
    var name = "name"+nr;
    var vorname = "vorname"+nr;
    var email = "email"+nr;

    var textfeld = document.getElementsByName(name);

    Hier ists! document.getElementsByName(name) gibt ein Array mit allen Elementen zurück, die das name-Attibut name="name" tragen, da name im Gegesatz zur id mehrfach verwendet werden können.

    Nun ist textfel ein Array, du könntest nun sagen, welchem Element Du die Farbe verpassen willst

    textfeld[0].style.backgroundColor = "#FFFFFF";
    textfeld[1].style.backgroundColor = "#FFFFFF";

    usw, dann vielleicht mit einer Schleife das ganze durchrutschen.

    Aber da Du unterschiedliche Namen verwendest mit Nummer versehen, benutzt Du vielleicht besser Ids und document.getElementByName(id)

    //usw.

    }
    ..
    ..
    <td><input type="Text" name="name1"></td>
    <td><input type="Text" name="vorname1"></td>
    <td><input type="Text" name="email1"></td>
    ..
    ..
    <a href="javascript:dummy(<? echo $nr ?>)">....
    ..
    ..

    Was mache ich falsch? Wenn ich das hier benutze, dann funktioniert es: document.form.name1.style.backgroundColor = "#FFFFFF";

    Aber wie bastlere ich ein Aufruf ohne festen Namen zu benutzen, sondern mit Variablen?
    NAME = "name"+nr;
    document.form.NAME.style.backgroundColor = "#FFFFFF";
    Wie geht das?  |__so nicht
    Mit
    document.getElementsByName("name1").style.backgroundColor = "#FFFFFF";
    geht es bei mir gar nicht.

    Danke