DOM: verschachtelte Elemente ansprechen mit Netscape 7
Chadi
- dhtml
0 Cheatah0 Chadi
0 wunderwarzenschwein0 peterS.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
function klapp_runter(){
alert(document.getElementById("Knopf").document.getElementsByName("bild1")[0].src);
}
</script>
<style type="text/css">
<!--
#Knopf { position:absolute; top:50px; left:100px; height:50; visibility:visible; z-index:1;}
-->
</style>
</head>
<body>
<div id="Knopf">
<img name="bild1" src="kontakt.gif">
</div>
<a href="index.htm" onMouseOver="klapp_runter()">hallo</a></td>
</body>
</html>
Erläuterung:
Wenn man über den Link 'hallo' mit der Maus rüberfährt, so wird die Javascript-Funktion 'klapp_runter()' ausgeführt. Diese bezieht sich auf den, direkt nach dem BODY-Tag, definierten DIV-Bereich, der ein Bild namens 'bild1' enthält.
In der Funktion 'klapp_runter()' wird über DOM der Pfad des Bildes in ein Nachrichtenfenster ausgegeben. Dies klappt wunderbar mit dem I.E.6 und dem Opera 7.11, jedoch nicht mit dem Netscape 7.02.
Meine Frage:
Wie kann ich das Bild mit Netscape 7 ansprechen, mit einer möglichst ähnlichen Syntax wie die in der Funktion 'klapp_runter()'. Möglichst ohne 'firstChild'-Syntax.
Hi,
alert(document.getElementById("Knopf").document.getElementsByName("bild1")[0].src);
vielleicht bin ich gerade im falschen Film; aber wozu dient Deiner Meinung nach das zweite document?
Cheatah
Das kam mir auch seltsam vor, aber anscheinend ist das zweite document für I.E. und Opera das DIV-Element, denn wenn ich es weglasse klappt das nicht mehr.
Hi,
alert(document.getElementById("Knopf").document.getElementsByName("bild1")[0].src);
Wie kann ich das Bild mit Netscape 7 ansprechen, mit einer möglichst ähnlichen Syntax wie die in der Funktion 'klapp_runter()'. Möglichst ohne 'firstChild'-Syntax.
Also über document.getElementsByName("bild1")[0] ist das Bild direkt ansprechbar, egal in welchem Div es liegt. Hierzu muss natürlich der Name des Bildes bekannt sein.
Wenn du es über den Div machen willst, wirst du um firstChild nciht herumkommen. Was spricht denn dagegen?
alert(document.getElementById("Knopf").firstChild.src);
HTH
wunderwarzenschwein
Wenn du es über den Div machen willst, wirst du um firstChild nciht herumkommen. Was spricht denn dagegen?
Flogendes spricht dagegen:
Eigentlich sieht mein DIV-Element so aus:
<div id="Knopf"><table cellpadding="0" cellspacing="0" border="0"><tr><td><img name="bild1" src="kontakt.gif"></td></tr><tr><td><img name="bild2" src="kontakt.gif"></td></tr></table></div>
Erstmal dürfte ich weder Leerzeichen noch Zeilenumbrüche im Quelltext des DIV eintragen, da Netscape 7 jedes davon als eigenen Kindknoten interpretiert. Ausserdem müsste ich mit 'firstChild' das folgendermaßen notieren:
alert(document.getElementById("Knopf").firstChild.firstChild.firstChild.firstChild.firstChild.src);
...und das ist mir einfach zu lang.
Hi,
alert(document.getElementById("Knopf").firstChild.firstChild.firstChild.firstChild.firstChild.src);
Glp. OK, das ist wohl nicht so ganz das Wahre... ;-)
Bleibt wohl nur der Weg über getElementByID bzw. getElementByName
HTH
wunderwarzenschwein
gruss Chadi,
bilder lassen sich am besten ueber die image-collection
"document.images[[nameOderIdOderIndex]]" ansprechen, es
sei denn, Du moechtest immer noch nicht auf die unter-
stuetzung des gehassliebten nn4 verzichten, wie es die
div-verschachtelungen in Deinem beispiel erfordern wuerden;
tschoe - peterS. - pseliger@gmx.net