Event Handler: Zugriff auf globale Variable
alpe
- javascript
Hallo
kann es sein, dass man in Event Handlern keinen Zugriff auf global angelegte Variablen hat? Mir fällt das jetzt zum ersten Mal auf und irgendwie findet sich dazu auch nix im Netz..
Meine ansonsten überall erreichbare globale Variable ist im Event Handler jedenfalls plötzlich 'undefined'.
Dennoch .. irgendwie kann ichs nich ganz verstehen, weil mir dazu auch kein Grund einfällt.
Weiß jemand dafür eine Lösung?
alpe
Hi,
Dennoch .. irgendwie kann ichs nich ganz verstehen, weil mir dazu auch kein Grund einfällt.
Weiß jemand dafür eine Lösung?
Nein, da brauchen wir schon konkretere Infos. </hilfe/charta.htm#tipps-fuer-fragende>
Abgesehen davon sollten globale Variablen nach Möglichkeit ja sowieso vermieden werden.
MfG ChrisB
Abgesehen davon sollten globale Variablen nach Möglichkeit ja sowieso vermieden werden.
Für das Problem, dass ich die Variable im Event Handler plötzlich 'undefined' ist. Tippfehler hab ich schon mehrmals geprüft.
Dem Vermeiden von globalen Variablen stimm ich zu, aber ich erweitere hier nur eine Anwendung in der bestimmte Sachen schon in dieser Art realisiert sind.
Irgendwie brauche ich halt Zugriff auf eine Variable deren Wert überall zentrale Bedeutung hat.
Hi,
Für das Problem, dass ich die Variable im Event Handler plötzlich 'undefined' ist. Tippfehler hab ich schon mehrmals geprüft.
MfG ChrisB
Hi,
Für das Problem, dass ich die Variable im Event Handler plötzlich 'undefined' ist. Tippfehler hab ich schon mehrmals geprüft.
MfG ChrisB
Menschens... ursprünglich war das sowas wie eine Ja / Nein Frage.
Hätte ja sein können, dass ein Zugriff dieser Art nicht geht weil Event Handler in sonst was für einem Kontext ablaufen, obwohl sie in der selben Script file stehen... Aber wie gesagt, dass hätte mich schwer verwundert.
Jedenfalls ist dem aber nicht so, da~~~html
<html>
<head>
<script type="text/javascript">[code lang=javascript]
var testvar="dumdidum";
function init_me() {
myspan = document.getElementById("span1");
myspan.onclick = myHandler;
}
function myHandler(evnt) {
alert(testvar);
}
</script>
</head>
<body onload="init\_me()">
<span style="border:1px solid black;" id="span1">lala</span>
</body>
</html>
[/code]
bestens funktioniert.
~~~javascript
var cmpver="defAll";
---snip---
td.onclick=ver_setReference;
function setReference(evnt) {
alert(cmpver);
}
Der Witz ist, dass wenn die Funktion nur so da steht auch funktioniert.
Bei vollständiger Funktion ists aber 'undefined' - selbst wenn der alert gleich als erstes ausgeführt wird.
Die vollständige Funktion sieht so aus und muss demnach irgendwo einen Fehler haben:
function ver_setReference(evnt) {
alert(cmpver);
var td=(util_isMozilla)?evnt.target:window.event.srcElement;
var oldCmpver = cmpver;
var cmpver = td.firstChild.nodeValue.replace(/\ \(set reference\)/,"");
var iframe = parent.document.getElementById("contents");
if(iframe) {
var attr = iframe.getAttribute("src");
iframe.setAttribute("src",attr.replace(oldCmpver,cmpver));
}
else {
var params = window.location.search;
//alert(oldCmpver+" "+cmpver);
window.location.search=params.replace(oldCmpver,cmpver);
}
}
MfG
alpe
vergesst es...
[code lang=javascript]function ver_setReference(evnt) {
alert(cmpver);
var td=(util_isMozilla)?evnt.target:window.event.srcElement;
var oldCmpver = cmpver;
var cmpver = td.firstChild.nodeValue.replace(/\ (set reference)/,"");
das hier ist des Rätsels Lösung...
var iframe = parent.document.getElementById("contents");
...und so weiter...
MfG
alpe
Ich sollte wohl hin und wieder nich so lang vor dem Kasten sitzen...
@@alpe:
nuqneH
Weiß jemand dafür eine Lösung?
Für welches Problem?
Qapla'