getElementsByName funzt nicht
Sonic
- javascript
0 wahsaga0 Struppi
0 Sonic
0 Sven Rautenberg0 Dag
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
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
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.
Aber so:
document.form[NAME].style.backgroundColor = "#FFFFFF";Struppi.
Danke
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
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