verändern des onclick handlers klappt nur im firefox
turbotoaster
- javascript
0 ChrisB0 turbotoaster0 turbotoaster0 ChrisB
Ich hab meine Seite so gestaltet, dass beim Klick auf einen Menubutton ein div mit zugehörigem Content öffnet.
Zur Vermeidung von riesigen geladen Datenmengen, aber auch aus Schönheit will ich dem Besucher freistellen, ob die anderen content-divs gleichzeitig geschlossen werden sollen oder halt nicht.
Bewältigt ist das durch ein Umschaltbutton ([ ] bzw. [x]) der über den JS-Befehl
document.getElementById('id').onclick=function() {fenster2('id');};
die MenuButton so verändert, dass beim Betätigen erst alle anderen content-divs geschlossen werden.
Im Firefox kein Problem, es funktioniert einwandfrei.
Nur IE und GoogleChrome wollen nicht so richtig: Die veränderung ist durch erneutes Betätigen des Umschaltbuttons nicht umkehrbar. Auch der Bildaustausch (ImgChange()
) klappt nicht mehr.
Ich schätze es liegt am Cookie.
Mein JS-Code
function schliessen () {
if (document.cookie) {
ImgChange('multioption','url(images/checked.png)');
document.getElementById('home').onclick=function() {fenster2('home');};
document.getElementById('band').onclick=function(){fenster2('band');};
document.getElementById('bilder').onclick=function(){fenster2('bilder');};
document.getElementById('videos').onclick=function(){fenster2('videos');};
document.getElementById('konzerte').onclick=function(){fenster2('konzerte');};
document.getElementById('gastebuch').onclick=function(){fenster2('gastebuch');};
document.getElementById('impressum').onclick=function(){fenster2('impressum');};
document.cookie = "option=1; expires=Thu, 01-Jan-70 00:00:01 GMT;";
}
else {
ImgChange('multioption','url(images/no.png)');
document.cookie = 'option=1;';
document.getElementById('home').onclick=function(){fenster('home');};
document.getElementById('band').onclick=function(){fenster('band');};
document.getElementById('bilder').onclick=function(){fenster('bilder');};
document.getElementById('videos').onclick=function(){fenster('videos');};
document.getElementById('konzerte').onclick=function(){fenster('konzerte');};
document.getElementById('gastebuch').onclick=function(){fenster('gastebuch');};
document.getElementById('impressum').onclick=function(){fenster('impressum');};
}
}
und ein Teil des HTML-codes
<body onload="fenster('home'); document.cookie = 'option=1;';">
.
.
.
<div class="menu">
<div class="home" id="home" onmouseover="ImgChange('home','url(images/home2.png)');" onmouseout="ImgChange('home','url(images/home.png)');" onclick="fenster('home');">
</div>
<div class="band" id="band" onmouseover="ImgChange('band','url(images/band2.png)');" onmouseout="ImgChange('band','url(images/band.png)');" onclick="fenster('band');">
</div>
<div class="bilder" id="bilder" onmouseover="ImgChange('bilder','url(images/bilder2.png)');" onmouseout="ImgChange('bilder','url(images/bilder.png)');" onclick="fenster('bilder');">
</div>
<div class="videos" id="videos" onmouseover="ImgChange('videos','url(images/videos2.png)');" onmouseout="ImgChange('videos','url(images/videos.png)');" onclick="fenster('videos');">
</div>
<div class="konzerte" id="konzerte" onmouseover="ImgChange('konzerte','url(images/konzerte2.png)');" onmouseout="ImgChange('konzerte','url(images/konzerte.png)');" onclick="fenster('konzerte');">
</div>
<div class="gastebuch" id="gastebuch" onmouseover="ImgChange('gastebuch','url(images/gastebuch2.png)');" onmouseout="ImgChange('gastebuch','url(images/gastebuch.png)');" onclick="fenster('gastebuch');">
</div>
<a href="http://www.myspace.com/noiseprevention" target="_blank">
<div class="myspace" id="myspace" onmouseover="ImgChange('myspace','url(images/myspace2.png)');" onmouseout="ImgChange('myspace','url(images/myspace.png)');">
</div>
</a>
<div class="impressum" id="impressum" onmouseover="ImgChange('impressum','url(images/impressum2.png)');" onmouseout="ImgChange('impressum','url(images/impressum.png)');" onclick="fenster('impressum');">
</div>
</div>
Danke schon mal,
turbotoaster
Hi,
Nur IE und GoogleChrome wollen nicht so richtig: Die veränderung ist durch erneutes Betätigen des Umschaltbuttons nicht umkehrbar. Auch der Bildaustausch (
ImgChange()
) klappt nicht mehr.Ich schätze es liegt am Cookie.
Ich schätze, es liegt am Verständnis vom Umgang mit Cookies in JavaScript.
if (document.cookie) erscheint mir jedenfalls keine besonders vernünftige Methode, das Vorhandensein eines speziellen Cookies abzufragen.
Was haben denn deine bisherigen Debugmaßnahmen ergeben?
MfG ChrisB
Ich schätze, es liegt am Verständnis vom Umgang mit Cookies in JavaScript.
Es ist richtig, dass ich neu in dem Bereich bin. Deshalb benutze ich auch ein Forum.
if (document.cookie) erscheint mir jedenfalls keine besonders vernünftige Methode, das Vorhandensein eines speziellen Cookies abzufragen.
Wenn es aber der einzigste benutzte Cookie ist? Fremde Cookies kann JS nicht lesen.
Was haben denn deine bisherigen Debugmaßnahmen ergeben?
Debug?
Debug?
Ach debug. Jetzt versteh ich :). Manchmal etwas zu schnell getippt.
Bis jetzt nicht viel. Ich war froh, dass es im Firefox endlich klappt.
Hi,
Ach debug. Jetzt versteh ich :). Manchmal etwas zu schnell getippt.
Bis jetzt nicht viel.
Dann fang damit an.
MfG ChrisB
Dann fang damit an.
War nicht gemeint, ich hätte nichts versucht, nur an irgendeinem Punkt wusste ich nicht mehr weiter und google konnte meine Fragen zum thema nicht beantworten.
Jetzt ist alles in Ordnung:
Die Funktion schliessen() verändert zum Schluss hin jetzt den Onclick Befehl, welcher diese aufruft. So wird beim nächsten Klick der Ex-else-Befehl nun als externe Function aufgerufen.
function schliessen () {
ImgChange('multioption','url(images/checked.png)');
document.getElementById('home').onclick=function(){fenster2('home');};
document.getElementById('band').onclick=function(){fenster2('band');};
document.getElementById('bilder').onclick=function(){fenster2('bilder');};
document.getElementById('videos').onclick=function(){fenster2('videos');};
document.getElementById('konzerte').onclick=function(){fenster2('konzerte');};
document.getElementById('gastebuch').onclick=function(){fenster2('gastebuch');};
document.getElementById('impressum').onclick=function(){fenster2('impressum');};
document.getElementById('multioption').onclick=function(){schliessen2();};
}
function schliessen2 () {
ImgChange('multioption','url(images/no.png)');
document.cookie = 'option=1;';
document.getElementById('home').onclick=function(){fenster('home');};
document.getElementById('band').onclick=function(){fenster('band');};
document.getElementById('bilder').onclick=function(){fenster('bilder');};
document.getElementById('videos').onclick=function(){fenster('videos');};
document.getElementById('konzerte').onclick=function(){fenster('konzerte');};
document.getElementById('gastebuch').onclick=function(){fenster('gastebuch');};
document.getElementById('impressum').onclick=function(){fenster('impressum');};
document.getElementById('multioption').onclick=function(){schliessen();};
}
Ich hab zwar selbst die Lösung gefunden, aber danke fürs lesen.
turbotoaster