Ich habe eine Seite mit Frames (jaja, ich weiß!), in der ich diverse Elemente mit getElementsById ansprechen möchte. Komischerweise funktioniert es nur, wenn ich die Elemente mit id=„bla“ auszeichne, bei name=„bla“ wird es vom Script nicht gefunden. Warum?
diverse Elemente mit getElementsById ansprechen möchte.
Also mit getElement s ById sollte es gar nicht gehen. Da innerhalb einer Seite jede ID nur einmal vorkommen darf, kann immer nur ein Element gefunden werden - also ohne das s.
Komischerweise funktioniert es nur, wenn ich die Elemente mit
id=„bla“ auszeichne, bei name=„bla“ wird es vom Script nicht
gefunden. Warum?
Weil die Funktion nach IDs sucht, nicht nach Namen. Daher heisst sie auch getElement ById
das Element eines anderen Frames nicht ansprechen?
Aus Sicherheitsgründen. Sonst wäre es relativ einfach, fremde Seiten zu embedden und dann manipulieren, was dir z.B. beim online-banking nicht gefallen würde.
es heißt getElementById ( -s )
name und id sind 2 unterschiedliche Element-Attribute
getElementsByName liefert ein array
insofern ist Dein Beispiel richtig!
Der Zugriff müsste … sofern er nicht gegen Same Origin Police verstößt … erfolgreich sein.
es heißt getElementById ( -s )
name und id sind 2 unterschiedliche Element-Attribute
Klar, da hatte ich mich auch nur hier vertippt. Denn tatsächlich verhält es sich so: Ich wollte mit
getElementsByName
auf ein
zugreifen, aber das klappt nur wenn ich das Element
auszeichne. Und das sollte doch eigentlich nicht sein, oder? Ich kann diese Elemente sogar gezielt im Array ansprechen, obwohl mehrere dieselbe id haben. Warum klappt all das nicht mit name=?
> getElementsByName liefert ein array
> insofern ist Dein Beispiel richtig!
> Der Zugriff müsste ... sofern er nicht gegen Same Origin
> Police verstößt ... erfolgreich sein.
Tuts auch erst, seit ich auch hier die Elemente mittels id benannt habe, und sie mit
getElementsByName
anspreche. Ist doch wirklich seltsam...
Danke und bestliche Grüße
-Rob.
Tuts auch erst, seit ich auch hier die Elemente mittels id
benannt habe, und sie mit
getElementsByName
anspreche. Ist doch wirklich seltsam…
… jaaaa … wirklich sehr seltsam !!!
getElementsByName dürfte id nicht finden
der td-tag hat lt. W3C kein Standard-Attribut name
es wäre also in diesem Fall ein custom-attribut, dessen Wert mittels getAttribute(‚name‘) auszulesen ist.
Es dürfte sich hierbei mehr um einen bug handeln, als ein feature. )
Und natürlich nicht in jedem Browser funktionieren!!!
Tuts auch erst, seit ich auch hier die Elemente mittels id
benannt habe, und sie mit
getElementsByName
anspreche. Ist doch wirklich seltsam…
… jaaaa … wirklich sehr seltsam !!!
getElementsByName dürfte id nicht finden
Habe es jetzt nochmal gründlich durchgetestet: Auf names spricht getElementsByName nicht an, auf id schon (alles im IE8). Echt blöd…
der td-tag hat lt. W3C kein Standard-Attribut name
es wäre also in diesem Fall ein custom-attribut, dessen Wert
mittels getAttribute(‚name‘) auszulesen ist.
Jaja, das habe ich befürchtet. DOM ist auch noch nicht universell… Ach, es ist doch echt zum kacken!
Danke für Deine Hilfe und schon mal ein schönes Wochenende (hier ist ja heute schon Feiertag).
Also mit getElement s ById sollte es gar nicht gehen. Da
innerhalb einer Seite jede ID nur einmal vorkommen darf, kann
immer nur ein Element gefunden werden - also ohne das s.
Klar, Schreibfehler meinerseits. Ich hatte es richtig gemacht, mich nur hier vertippt (s. o.).
Komischerweise funktioniert es nur, wenn ich die Elemente mit
id=„bla“ auszeichne, bei name=„bla“ wird es vom Script nicht
gefunden. Warum?
Weil die Funktion nach IDs sucht, nicht nach Namen. Daher
heisst sie auch getElement ById
Das hatte ich aber schon richtig geschrieben: Ich habe mit getElementsByName gesucht (und nur ids gefunden).
das Element eines anderen Frames nicht ansprechen?
Aus Sicherheitsgründen. Sonst wäre es relativ einfach, fremde
Seiten zu embedden und dann manipulieren, was dir z.B. beim
online-banking nicht gefallen würde.
Dat macht keenen Sinn, wa!? Ich greife doch nur auf verschiedene Frames derselben Quelle und innerhalb einer Seite zu. Bisher hatte das auch immer geklappt (z. B. in einer separaten Script-Datei auf jedes einzelne Frame, oder Seiteninhalte in einem anderen Frame laden). Nur eben das getElementsByName hatte nicht geklappt. Da hast Du vermutlich was falsch verstanden, denn mit id hauts ja auch hin, und das wäre aus den genannten Sicherheitsgründen natürlich auch verboten.
Habe es jetzt nochmal gründlich durchgetestet: Auf names
spricht getElementsByName nicht an, auf id schon (alles im
IE8). Echt blöd…
hatte es mir schon gedacht, dass es der IE ist )
was hast Du vor?
sieht so aus, als ob Du eine Reihe von td’s ändern willst.
würde auch mit getElementsByTagName und getAttribute gehen - browserübergreifend !!!
Jaja, das habe ich befürchtet. DOM ist auch noch nicht
universell… Ach, es ist doch echt zum kacken!
leider werden Browser nicht bestraft, wenn sie sich nicht an die Standards halten