【问题标题】:I can't figure out the bug in this jQuery我无法弄清楚这个 jQuery 中的错误
【发布时间】:2009-10-27 15:01:36
【问题描述】:

有问题的页面是... http://schnell.dreamhosters.com/index.php?page=gallery#

我使用 Firebug 来调试我的 jQuery 和其他代码花絮,事实证明它对于 Javascript/jQuery 调试非常有用。然而,与此同时,这是我经历过的最令人沮丧的调试经历之一。我不知道为什么,但有时我似乎可以从教程中复制别人的方法,一个字符一个字符,但仍然会出现错误。

无论如何,这里的问题是 Firebug 声称源代码的第 20 行存在错误。

缺少:在属性 id 之后 [打破这个错误] $('#table').animate({"left: " + attr + "px"}, 2000);\n

这个错误对我来说似乎是一个巨大的负担,因为冒号就在那里!这就是为什么调试 jQuery/Javascript 有时会如此痛苦的原因。错误消息相当复杂,有时对我来说甚至没有意义。或者这只是 Firebug。

无论哪种方式,我在这里的目标是我试图动态更改动画功能,以便您单击左箭头的次数越多,图像网格越向左移动(由于性质CSS 'left' 属性)。我有 Javascript 变量和一个隐藏的输入标签来帮助保存基本值,但主要障碍是让动画函数识别这些变量。据我所知,它只接受字符串文字作为关于如何制作动画的参数,并且文档对我没有帮助,因为它没有讨论变量与动画的使用,好像这是不可能的。

好吧,让我们说我不喜欢不可能,他很喜欢妨碍我。

【问题讨论】:

  • 我遇到了另一个错误,这是一个功能性错误。如果我滚动浏览我的图片网格并将 var 'count' 构建到 6,然后刷新页面,计数仍将是 6。所以下次我点击箭头时,网格移动了 7 步(6 + 1) 向右,而不是重新开始。由于我将步骤限制在 11(网格的末端),因此它会达到您根本无法滚动网格的地步,因为它认为您已经在末端并且无法进一步移动。我发现清除变量的唯一方法是关闭选项卡并重新访问该站点。建议?

标签: javascript jquery html css firebug


【解决方案1】:

传递给 animate 函数的对象字面量格式不正确,应该是:

$('#table').animate({left: attr + "px"}, 2000);

编辑:仔细查看您的代码,您还试图从 id = "count" 的输​​入中获取一个值,并且您缺少一个 # 字符来获得 ID 选择器:

var count = +$('#count').val(); // get #count value as Number

您还增加了这个count 变量,但您应该首先将其转换为数字,因为input 元素的value 属性是字符串。 (我使用赋值右侧的一元加号运算符)。

您必须将其转换为数字,因为如果您添加两个变量并且其中一个是字符串,则会发生连接:

 "1" + 1 == "11"

【讨论】:

  • 我不太明白为什么这是有效的,而我所做的却不是,但 Firebug 不再对我大喊大叫,所以这是我书中的胜利。现在看看整个混乱是否会按照我的意愿行事。
  • 也感谢您指出这些错误。我没有意识到输入标签的 value 属性默认是一个字符串,我假设 JS 中的 vars 类似于 PHP $ 变量,因为在初始化时为变量选择了最合适的数据类型
【解决方案2】:

试试:

$('#table').animate({left: attr}, 2000);

此处的“px”度量单位不是必需的。除此之外,以上是匿名对象的正确创建。你只是在花括号里放了一个字符串。

【讨论】:

  • 这很奇怪,因为我已经看到传递给动画函数的代码是一个完整的字符串文字,例如“top:300px”,但它的行为方式更像是 top : "300px" 也许我看到的是一种不再被认为是有效的旧样式,或者 jQuery 真的很挑剔。
  • 您可能会看到:animate("{left: 20}", 3000) 但这不一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
相关资源
最近更新 更多