2012-09-03 24 views
0

我有PHP文件,在這個文件中我有這樣的代碼:情況下,當 「的document.ready」 阻撓

<script language="JavaScript" type="text/javascript" src="jquery.js"></script> 
    <script language="JavaScript"> 
     $(document).ready(function() { 
      var myvar = <?php echo json_encode($myvar); ?> ; 
     }); 
    </script> 
    <script language="JavaScript" type="text/javascript" src="costum.js"> </script> 

和costum.js文件我有代碼:

$(document).ready(function() { 
    alert(myvar); 
}); 

這不工作,錯誤CONSOL返回 「MYVAR是不確定的」

如果php文件我寫這篇文章(即無 「的document.ready」)

<script language="JavaScript"> 
    var myvar = <?php echo json_encode($myvar); ?> ; 
</script> 

在costum.js文件中,代碼alredy正在工作。請說出爲什麼會發生?

回答

5

嘗試

<script> 
    var myvar; 
    $(document).ready(function() { 
     myvar = <?php echo json_encode($myvar); ?> ; 
    }); 
</script> 

您的變量聲明爲全局的(或者換句話說,在外部範圍)從兩個document.ready功能查看。

作爲便箋language屬性沒有必要。即使type不是必需的(如果您使用的是文檔的html5

+0

感謝,理解並感謝身邊「語言屬性」的信息。 Bergi先生和先生xdazz,你也謝謝。 – RIKI

1

您的myvar位於就緒功能的本地範圍內。將外部聲明var移到全局並可供其他腳本使用。

但是,因爲您只是分配給變量,您無需等待DOMready。只需使用

<script type="text/javascript"> 
    var myvar = <?php echo json_encode($myvar); ?>; 
</script> 

順便說一句,在language屬性is deprecated

1

函數內部的局部變量只在函數範圍內可見。

當您在全局範圍中聲明變量時,則它是全局變量。

您可以通過將其暴露在全球範圍內:

$(document).ready(function() { 
     var myvar = <?php echo json_encode($myvar); ?>; 
     window['myvar'] = myvar; 
});