alpe: Event Handler: Zugriff auf globale Variable

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

  1. 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

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. 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.

      1. Hi,

        Für das Problem, dass ich die Variable im Event Handler plötzlich 'undefined' ist. Tippfehler hab ich schon mehrmals geprüft.

        Bisschen schwer von Begriff?

        MfG ChrisB

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.
        1. Hi,

          Für das Problem, dass ich die Variable im Event Handler plötzlich 'undefined' ist. Tippfehler hab ich schon mehrmals geprüft.

          Bisschen schwer von Begriff?

          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

          1. 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...

  2. @@alpe:

    nuqneH

    Weiß jemand dafür eine Lösung?

    Für welches Problem?

    Qapla'

    --
    Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)