定义变量的奇怪错误

时间:2014-07-14 20:28:03

标签: javascript jquery

这里有问题, 要么因为没有看到明显的东西而感到愚蠢,要么在今天下午改变定义变量的方式......

$(function() {
    console.log('something');
    var marquee = $('#marquee');
    var selected = $('#marquee ul li a img').first();
    var link = $('#marquee ul li a');
    var string = 'something else';
});

当我来到控制台时,'某些东西'未记录。 当我输入' marquee'时,返回jQuery对象,一切都很好。 但是,当我输入'选择',' link',' string'时,我会收到参考错误,变量未定义。

我清除了缓存,更改了浏览器,删除了' var'在名字之前,总是一样的。 有人知道发生了什么事吗?

2 个答案:

答案 0 :(得分:0)

我无法重现您的任何问题。我把你的javascript放到一个jsfiddle中,它正是我所期望的:log" something"到控制台,我无法访问任何超出范围的变量。

http://jsfiddle.net/ZMHL3/

$(function() {
    console.log('something');
    var marquee = $('#marquee');
    var selected = $('#marquee ul li a img').first();
    var link = $('#marquee ul li a');
    var string = 'something else';
});

答案 1 :(得分:-1)

问题

问题是代码永远不会执行。您认为创建了marquee变量,但事实并非如此,因为在控制台中,像marquee这样的输入值将打印一个id设置为输入值的元素。因此,如果您在控制台中键入my_div并且未设置my_div变量,则会返回ID为" my_div"的元素。 (如果你不相信我,你可以自己测试一下)。这意味着永远不会设置marquee变量。

解决方案

以下解决方案之一可能有效,也可能无效。

解决方案1 ​​

将代码放在$(document).ready(function(){ });内,而不是放在$(function(){ });内。

注意:(这可能只是您正在使用的jQuery版本的错误。

解决方案2

在您的body标记中的所有html下添加脚本,而不是head标记。