我有php文件,在这个文件中我有这个代码:
<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 is undefined”
如果在php文件中我写这个(也就是说,没有“document.ready”)
<script language="JavaScript">
var myvar = <?php echo json_encode($myvar); ?> ;
</script>
在costum.js文件中,代码alredy正在运行。请告诉我为什么会这样?
答案 0 :(得分:5)
尝试
<script>
var myvar;
$(document).ready( function () {
myvar = <?php echo json_encode($myvar); ?> ;
});
</script>
您的变量必须声明为全局(换句话说,在外部作用域中)才能从document.ready
个函数中查看。
作为旁注language
属性不是必需的。即使type
也没有必要(如果您使用的是html5
doctype)
答案 1 :(得分:1)
您的myvar
位于就绪功能的本地范围内。将var
声明移到外面,使其成为全局声明,并可用于其他脚本。
但是,正如您刚刚分配给变量一样,无论如何都不需要等待DOMready。只需使用
<script type="text/javascript">
var myvar = <?php echo json_encode($myvar); ?>;
</script>
BTW,language
属性is deprecated。
答案 2 :(得分:1)
函数内部的局部变量仅在函数范围内可见。
在全局范围内声明变量时,它就是全局变量。
您可以通过以下方式将其公开到全球范围:
$(document).ready( function () {
var myvar = <?php echo json_encode($myvar); ?>;
window['myvar'] = myvar;
});