getElementById + CSS

Sonjasun

Grünschnabel
Hallo,
ich schreibe gerade an einem Script, daß das Browserfenster aktualisieren soll (unter IE 5), je nach dem welches per CSS plazierte Objekt in einen bestimmten Bereich gezogen wird. Ich dachte mir, das könnte wie folgt aussehen:
Code:
if ((x >=0&& x<=224)&&(y >=400&& y<=570)){
if(document.getElementById){
document.getElementById('s');
window.open("movetest2.html","_self","status = 1");
}
else if(document.getElementById){
document.getElementById('k');
window.open("movetest3.html","_self","status = 1");
}
else if(document.getElementById){
document.getElementById('r');
window.open("movetest4.html","_self","status = 1");
}
}
Und die Elemente sind wie folgt im <body> plaziert:
Code:
<div id="s" style="position:absolute;left:45%;top:0;">
<imgsrc=scrabble.pngname="s">
</div>
<div id="k" style="position:absolute;left:55%;top:0;">
<imgsrc=scrabble2.pngname="k">
</div>
<div id="r" style="position:absolute;left:75%;top:0;">
<imgsrc=scrabble3.pngname="r">
</div>
Die Drag n Drop Funktion klappt, aber es wird immer nur die Seite movetest2.html aufgerufen, egal welches Objekt ich in die Fläche ziehe.
Hat jemand eine Idee, warum erstes Script nicht ?
Danke schon mal.
 
Was soll da funktionieren... du öffnest ein Fenster, mehr nicht.
Da die erste Abfrage
Code:
if(document.getElementById){
document.getElementById('s');
window.open("movetest2.html","_self","status = 1");
}
...zutrifft, wird der Rest überhaupt nicht berücksichtigt.

BTW: vielleicht könntest du ja mal so nebenher den HTML-Code korrigieren, es ist schon eher ein Glücksfall, wenn dir damit überhaupt etwas angezeigt wird:
<imgsrc=scrabble3.pngname="r">
 
Hm, komisch, muss beim reinkopieren passiert sein. in meinem code sind die leerzeichen da. Aber danke.
Und wie muss ich den Code abändern? Wenn ich zum Beispiel:

if(document.getElementById=='s'){
document.getElementById('s');
window.open("movetest2.html","_self","status = 1"); }

(mit oder ohne Zeile 2) schreibe, passiert gar nichts mehr, wenn ich die Elemente darauf ziehe.
Wäre nett, wenn du mal eine Lösung nennen könntest.
Danke.
 
Also das Script sieht so aus:
Code:
<SCRIPT LANGUAGE="JavaScript">
 
N = (document.all) ? 0 : 1;
var ob;
 
function MD(e) {
if (N) {
ob = document.layers[e.target.name];
X=e.x;
Y=e.y;
 
return false;
}
else {
ob = event.srcElement.parentElement.style;
X=event.offsetX;
Y=event.offsetY;
}
 
}
 
function MM(e) {
 
if (ob) {
if (N) {
ob.moveTo((e.pageX-X), (e.pageY-Y));
}
else {
ob.pixelLeft = event.clientX-X + document.body.scrollLeft;
ob.pixelTop = event.clientY-Y + document.body.scrollTop;
 
var x = ob.pixelLeft;
var y = ob.pixelTop;
 
//Imagemap und Aktion beim Überfahren werden definiert 
if ((x >= 0 && x<= 224) && (y >=400 && y<= 570)){
if(document.getElementById == 's'){
window.open("movetest2.html","_self","status = 1");
}
else if(document.getElementById == 'k'){
window.open("movetest3.html","_self","status = 1");
}
else if(document.getElementById=='r'){
window.open("movetest4.html","_self","status = 1");
}
}
return false; }
}
}
 
function MU() {
ob = null;
}
 
if (N) {
document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP);
}
document.onmousedown = MD;
document.onmousemove = MM;
document.onmouseup = MU;
</script>

Und der body tag:
Code:
<body background="HG2.jpg" onLoad="window.resizeTo(1024,768)">
 
<!-- Bilder sind mit CSS plaziert -->
<div id="s" style="position:absolute;left:45%;top:0;">
<img src=scrabble.png name="s">
</div>
<div id="k" style="position:absolute;left:55%;top:0;">
<img src=scrabble2.png name="k">
</div>
<div id="r" style="position:absolute;left:75%;top:0;">
<img src=scrabble3.png name="r">
</div>
</body>

Sagt Dir das was?
 
@SilentWarrior:
Klar, und so wie ich es verstanden habe, funktioniert es halt nicht. Ich habe auch

if(document.getElementById('s'))

ausprobiert. So hätte ich es von der Logik her mir gedacht...
Kurz gesagt, ich hab schon einiges ausprobiert, bevor ich hier gepostet habe. :confused:
 
Zuletzt bearbeitet:
Wenn du herausbekommen willst, in welchem Element ein Event gefeuert hat, geht das anders:
Code:
//IE
event.srcElement
//andere
e.target
 
Sven Mintel hat gesagt.:
Wenn du herausbekommen willst, in welchem Element ein Event gefeuert hat, geht das anders:
Code:
//IE
event.srcElement
//andere
e.target
Okay, aber das scheint ja nicht alles zu sein. Zumindest bekomme ich immer noch Fehler, wenn ich versuche event.srcElement zu verwenden. Ihr seht ja meinen Code oben. Kann sich nicht mal einer erbarmen und mir schreiben, was ich wo wie einsetzen muss? Ich verzweifele langsam. Bitte, bitte, bitte! Ich weiß nicht was ich falsch mache und bei SelfHTML komme ich auch nicht weiter. Hilfe!
 
Zurück