在jquery脚本中使用变量

时间:2013-05-26 11:01:02

标签: javascript jquery variables

我导入了我的脚本

<script src="/test.js"></script>

,内容为

var test= $(document).find('aside#bar');
var list= test.find('ul');

然后我使用以下脚本追加字符串

<script>
$(document).ready(function () {
  $(list).text("testing message");
});
</script>

但Chrome控制台说Uncaught ReferenceError: list is not defined

我如何在jquery中使用变量?

更新

我发现所有脚本在该页面中都不起作用

我用

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    <script src="/test.js"></script>
    <script>

$(document).ready(function () {
  $(document).html("testing message");
});
    </script>

但没有任何附加内容,Chrome控制台不会记录任何内容

4 个答案:

答案 0 :(得分:2)

在test.js文件中声明一个局部变量。您必须使用window.variableName声明它是全局的,如下所示:

window.test= $(document).find('aside#bar');
window.list= test.find('ul');

然后,您将能够从 test.js之后加载的其他Javascript文件中访问它。

答案 1 :(得分:1)

  1. 检查Chrome中是否加载了/test.js。我认为你给这个文件的URL可能是错误的

    <script src="/test.js">
    

    打开Chrome's Network panel,然后重新加载页面。在test.js脚本尝试加载时,您是否看到红色错误消息?

    如果此页面是http://localhost/test/mypage.html,则src='/test.js'将加载http://localhost/test.js。因为/在开头。因此,请检查URL路径,看看是否首先加载了脚本。

  2. test.js脚本只是在说var test = ..., var list = ...。但此时,文档甚至可能没有加载!但是,当然,如果您的脚本test.js已正确加载 - 那么它会显示testlist变量本身的错误。由于您在设置此变量时没有看到错误,我的第一个猜测是test.js 正在加载。首先修复脚本加载,然后修复脚本本身:

    $(document).ready(function() {
        var test = ...
        var list = ...
    });
    
  3. 但是,当您尝试在其他地方使用testlist时,这也无效!因为它们是使用var声明的。 var只创建局部变量,因此它们在函数外部不可用(如果您在上面检查,我们将var test =..., var list = ...包裹在function() { }内,因此它们不会在该功能之外可用)。所以让他们像:

    $(document).ready(function() {
        window.test = ...
        window.list = ...
    });
    

    您也可以通过删除var关键字来完成同样的操作,但这有其自身的问题。请务必先阅读Javascript Variable Scopes

  4. 对所有脚本标记使用任何类型或语言:

    <script language="javascript" type="text/javascript">
      $(document).ready(...)
    </script>
    

答案 2 :(得分:0)

只需使用list.html("test message")list.text("test message")

即可
$(document).ready(function () {
  list.html("testing message");
});

<强> DEMO

修改

因为在test.js

中使用了jquery函数
<script src="jquery.js"></script>  <= First
<script src="test.js"></script> <= Second

答案 3 :(得分:0)

为什么在文档准备就绪时不定义变量?

您可以尝试使用脚本

$(
   var test= $(document).find('aside#bar');
   var list= test.find('ul');
);

<script>
$(document).ready(function () {
  $(list).text("testing message");
});
</script>

但我会这样做

$(
       var test= $(document).find('aside#bar');
       var list= test.find('ul');
       $(list).text("testing message");
    );

最后......除了#bar ????

除了是一个班级?你忘记了点? 。在旁边??可能存在问题。

抱歉我的英文不好,希望得到这个帮助!再见!