JS变量范围和脚本源

时间:2011-07-14 18:24:03

标签: javascript variables scope script-tag

我在文档头部的脚本标记中定义了一个变量:

<?php if (isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == true) {
    echo '<script>var userdir = '.$_SESSION['user']->directory.'</script>';
} ?>

之后我包含了几个javascript文件,其中一个包含一个包含

的函数
if (type == 'image'){
   var imgElement = elementId.replace(/upload_/, "img_");
   $('#'+imgElement).attr("src", "assets/uploads/"+ userdir +"/images/" + vidfile);
}

如果我查看源文件,则在文档中定义userdir,但返回的图像路径为“未定义”。不应该得到价值吗?

2 个答案:

答案 0 :(得分:1)

您几乎肯定需要在userdir的分配中包含引号。

echo '<script>var userdir = "'.$_SESSION['user']->directory.'";</script>';

答案 1 :(得分:0)

在函数之外定义的任何内容都将是一个全局变量。我假设您在文档中定义的变量是一个全局变量。该全局变量应该在任何函数内部可用。我假设你的包含文件是由函数组成的。如果实际上已经定义了全局值,并且您无法在函数或js文件中访问它们,那么我会质疑事物加载的顺序。