Variable ist nicht definiert

shr1k3

Mitglied
Hey Leute,

ich hab ein Problem mit einer Variablen.

Erstmal der Code:


HTML:
<script type="text/javascript">
	$(document).ready(function(){
			

		
		var test = "test";
					

		
	});

</script>

Problem ist wenn ich im <body> die Variable per

HTML:
	<script type="text/javascript">
			alert(test);
    </script>
ausgeben möchte sagt Firebug mir das die Variable nicht definiert ist =/

P.S. jQuery wird benötigt!
 
Das ist auch richtig so, du deklarierst die Variable ja erst nachdem der Body geladen ist.
Code:
$(document).ready();
Führt den beinhaltenden Code erst aus wenn das Dokument geladen ist.
 
Danke für deine schnelle Antwort.

Wie bekomm ich es hin das er die Variable erkennt?

Hab auch schon probiert um das alert nen
Code:
$(document).ready();
zupacken, aber läuft trotzdem nicht.
 
Die Variable vor dem document.ready definieren.
Code:
var test = 'test';
$(document).ready(function (){
     alert(test);
});
 
Das Problem ist weniger der zeitliche Ablauf (auch wenn dieser ebenfalls ein Problem ist), sondern das Scoping (http://en.wikipedia.org/wiki/Scope_(programming), http://de.wikipedia.org/wiki/Variab....BCltigkeitsbereich_von_Variablen_.28Scope.29).


Wieso musst du denn außerhalb der ready-Funktion auf die Variable zugreifen? Generell solltest du den gesamten Code in die ready-Funktion stecken. Wenn du aber aus zwei verschiedenen ready-Funktionen auf die Variable zugreifen willst, musst du sie in einem äußeren Scope definieren, auf den beide Funktionen Zugriff haben.

HTML:
<script type="text/javascript">
    var test;    

    $(document).ready(function(){
        test = "test";
    });
</script>

HTML:
<script type="text/javascript">
    $(document).ready(function(){
        alert(test);
    });
</script>
 
also das ist mir bewusst, aber ich brauch die variable unbedingt im doc.ready

ich poste dir mal den ganzen Code, vllt ist es dann einfacher.

Der meckert halt bei mir rum das flashvars nicht definiert ist. Hab auch schon um die Vars im body nen doc.ready gelegt, aber nützt auch nichts.

Code:
	$(document).ready(function(){

		
		var flashvars = new Array();
		
		
		
		$("div[id^='player']").each(function(index){
			
			var varcontent = "";
			
			index++;
			var curr = $(this).prev().attr("href");
			
						
			varcontent += '"media'+index+'":"test",';
			varcontent += '"controls":"fixed",';
			varcontent += '"playlist":"false",';
			varcontent += '"description":"off",';
			varcontent += '"backgroundOpacities":"0",';
			varcontent += '"barLoadedColor":"0xFFFFFF",';
			varcontent += '"tooltipTextColor":"0x4AA4FF",';
			varcontent += '"volume":"0.7"';
			
			flashvars[index] = jQuery.parseJSON('{'+varcontent+'}');
					
		});


Im Body steht:
Code:
<script type="text/javascript">

        var flashvars1 = flashvars[1];
        var flashvars2 = flashvars[2];
         .....

</script>
 
Zurück