Welche Elemente kann mit Netscape 4 mittels der ID ansprechen??
Christian
- javascript
Hi,
ich arbeite gerade an einer Netscape-4-Lösung, die die Elemente durch getElementById() ansprechen soll.
Bisher sind mir nur positierte DIV-Tags eingefallen, die mit dem id-Attribut (document.layers[id]) angesprochen werden können.
Gibt es noch weitere?? Soweit ich weiß, kann man die anderen nur durch das name-Attribut ansprechen!
Christian
morgens,
ich arbeite gerade an einer Netscape-4-Lösung, die die Elemente durch getElementById() ansprechen soll.
Oh. Wenn ich mich recht erinnere, kann dieses Museumsstück getElementById() nicht verstehen.
Bisher sind mir nur positierte DIV-Tags eingefallen, die mit dem id-Attribut (document.layers[id]) angesprochen werden können.
"document.layers" ist aber etwas völlig anderes als "document.getElementById()"
Gibt es noch weitere?? Soweit ich weiß, kann man die anderen nur durch das name-Attribut ansprechen!
Wenn du dich genauer ausdrücken könntest, könnte man dir eventuell genauer antworten. Vorerst könnte es dir eventuell weiterhelfen, in SELFHTML nachzulesen, was es so zu "id" und "name" Bmerkenswertes gibt - sihe http://selfhtml.teamone.de/html/referenz/attribute.htm#id_idref_name
Grüße aus Berlin
Christoph S.
Hi,
Oh. Wenn ich mich recht erinnere, kann dieses Museumsstück getElementById() nicht verstehen.
Richtig! Und genau deshalb möchte ich diese Methode ja auch für Netscape 4 verfügbar machen, etwa so:
if(document.layers)
{
document.getElementById = function(id)
{
return document.layers[id];
}
}
da Layer in Netscape 4 geschachtelt sind, habe ich es auch noch rekursiv gelöst, so das <div>s wirklich auch gefunden werden.
Aber es können eben nur <div>s mittels document.layers gefunden werden.
<a> können durch document.links/anchors nur durch das name-Attribut angesprochen werden.
Nun die Frage, ob es nicht doch irgendwie geht andere Elemente durch das id-Attribut anzusprechen:
z.B. so: <form id="test" ...>
document.forms["test"]
ab Netscape 6 geht das! Gibts in Netscape 4 auch noch Elemente die man IRGENDWIE durch das ID-Attribut ansprechen kann!!?? Das "IRGENDWIE" würde ich dann speziell für Netscape 4 durch selbstdefinierte document.getElementById ersetzen.
Gruß
Christian
hallo,
if(document.layers) {
document.getElementById = function(id) {
return document.layers[id];
}
}
Interessanter Vorschlag - und er _könnte_ durchaus funktionieren. Allerdings ist es nicht zweckmäßig, hier
return document.layers[id];
zu verwenden, weil das ein "besetzter Ausdruck" ist. Ersetze das durch eine Variable, dann _könnte_ es klappen (ich hab aber jetzt keine Lust, das selber durchzuspielen und auf Machbarkeit zu prüfen).
da Layer in Netscape 4 geschachtelt sind, habe ich es auch noch rekursiv gelöst, so das <div>s wirklich auch gefunden werden.
Hm. Bist du sicher? Netscape 4 kann bereits DIV's und braucht dafür keine Sonderkonstruktionen.
Aber es können eben nur <div>s mittels document.layers gefunden werden.
<a> können durch document.links/anchors nur durch das name-Attribut angesprochen werden.
Nun die Frage, ob es nicht doch irgendwie geht andere Elemente durch das id-Attribut anzusprechen
Möglicherweise. Aber ich bitte um Nachsicht: außer der These, dann mit Variablen (und eventuell RegExpressions) zu arbeiten, fällt mir auch nichts weiter ein, und da ich selbst nicht vor dem Zwang stehe, eine solche Konstruktion einsetzen zu müssen, bin ich gezwungen, dich an dieser Stelle alleine zu lassen.
ab Netscape 6 geht das! Gibts in Netscape 4 auch noch Elemente die man IRGENDWIE durch das ID-Attribut ansprechen kann?
IRGENDWIE können nahezu alle HTML-tags id-Attribute bekommen. Das hat nichts mit dem Browser zu tun, sondern mit HTML und der per DOCTYPE angezogenen DTD.
Das "IRGENDWIE" würde ich dann speziell für Netscape 4 durch selbstdefinierte document.getElementById ersetzen.
Dann schreibe dir deine eigene DTD dafür.
Grüße aus Berlin
Christoph S.
Hi,
Interessanter Vorschlag - und er _könnte_ durchaus funktionieren. Allerdings ist es nicht zweckmäßig, hier
return document.layers[id];
zu verwenden, weil das ein "besetzter Ausdruck" ist. Ersetze das durch eine Variable, dann _könnte_ es klappen (ich hab aber jetzt keine Lust, das selber durchzuspielen und auf Machbarkeit zu prüfen).
Er funktioniert! Wie meinst du das mit der Variable?? Was soll das bringen?? So wie ich es hatte funktiniert es!
da Layer in Netscape 4 geschachtelt sind, habe ich es auch noch rekursiv gelöst, so das <div>s wirklich auch gefunden werden.
Hm. Bist du sicher? Netscape 4 kann bereits DIV's und braucht dafür keine Sonderkonstruktionen.
Ja bin ich. Ich meine die Ansprechung über JavaScript http://selfhtml.teamone.de/javascript/objekte/layers.htm#document
(--> "Beachten Sie:")
Bsp:
<layer><layer id="test"></layer></layer>
document.layers[0].document.layers["test"] würde das innere Layer ansprechen.
<layer> kann man dann durch <div style="position:absolute/relative"> ersetzen, um wieder zu gültigem HTML zurück zukehren!
-> rekrusive Lösung findet auch ein tiefergeschachteltes <div>
Möglicherweise. Aber ich bitte um Nachsicht: außer der These, dann mit Variablen (und eventuell RegExpressions) zu arbeiten, fällt mir auch nichts weiter ein, und da ich selbst nicht vor dem Zwang stehe, eine solche Konstruktion einsetzen zu müssen, bin ich gezwungen, dich an dieser Stelle alleine zu lassen.
Was sollen denn RegExps bringen?? Hab jetzt mal die anderen gängigen Objekte untersucht (document.link/anchors/images/forms.... aber die reagieren alle nur auf das name-Attribut).
ab Netscape 6 geht das! Gibts in Netscape 4 auch noch Elemente die man IRGENDWIE durch das ID-Attribut ansprechen kann?
IRGENDWIE können nahezu alle HTML-tags id-Attribute bekommen. Das hat nichts mit dem Browser zu tun, sondern mit HTML und der per DOCTYPE angezogenen DTD.
Klar, das die Elemente das id-Attribut bekommen können. Problem ist nur das unter Netscape 4 die wenigsten dadurch über JavaScript angesprochen werden können. (scheinbar nur <div>s). Aber ist auch egal.
Divs reichen ja für DHTML in Grunde. Habs noch erweitert. Das jedes DIV jetzt noch ein style-Objekt bekommt, über das man die Layer-Eigenschaften ändern kann. So wird Netscape 4 irgendwie doch noch DOM1-fähig :-) !
Ich finds ziemlich interessant, egal ob es noch praxisrelevant ist oder nicht.
Christian