4

我正在尝试使用此for循环来显示 div。但是我从 jQuery 库中得到一个奇怪的错误。

错误:语法错误,无法识别的表达式:=10]

我已经阅读了有关 javascript 小数的问题,但我仍然不明白为什么这不起作用:

for (var i = 10.00; i >= ui.value; i -= 0.25) {
    $("data_id=" + Math.floor(i) + "]").show();
}

隐藏 div 时,我使用它并且效果很好:

for (var i = 0.00; i < ui.value; i += 0.25) {
    $("[data_id=" + Math.floor(i) + "]").hide();
}
4

4 回答 4

7

您在第一个循环中忘记了 [,这将起作用:

for (var i = 10.00; i >= ui.value; i -= 0.25) {
    $("[data_id=" + Math.floor(i) + "]").show();
}

无论如何,如果您是 .floor() 数字,您应该将其转换为整数循环。

于 2012-09-16T10:14:55.820 回答
2

您缺少属性等于选择器的左方括号:

for (var i = 10.00; i >= ui.value; i -= 0.25) {
    $("[data_id=" + Math.floor(i) + "]").show();
}


然而,正如其他人所提到的,绝对没有理由为此使用浮点数,因为调用.floor()本质上意味着您.show()不必要地调用每个 div 4 次:

for (var i = 10; i >= ui.value; i--) {
    $("[data_id=" + i + "]").show();
}

在大约四分之一的工作中,这应该完全符合您的要求。

于 2012-09-16T10:15:20.250 回答
1

[您在此处的选择器中缺少 a :

$("data_id=" + Math.floor(i) + "]").show();

应该是:

$("[data_id=" + Math.floor(i) + "]").show();

您可能还应该加上'的值data_id,所以最终结果应该是:

$("[data_id='" + Math.floor(i) + "']").show();
于 2012-09-16T10:15:54.150 回答
1

永远不应该依赖浮点运算来处理迭代/索引变量。它们可能会让你陷入奇怪的情况,更糟糕的是,不同的处理器处理浮点的方式不同。您的示例似乎没有浮点的任何副作用,但使用浮点确实是一种不好的做法。

于 2012-09-16T10:16:44.227 回答