javascript for循环与小数

时间:2012-09-16 10:10:37

标签: javascript jquery

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

错误:语法错误,无法识别的表达式:= 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 个答案:

答案 0 :(得分:5)

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

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

如果你是.floor() - 那么你应该将它转换为一个整数循环。

答案 1 :(得分:2)

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

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

<小时/> 然而,正如其他人所提到的,完全没有理由使用浮点数,因为调用.floor()实际上意味着你不必要地在每个div上调用.show() 4次:

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

这应该完成你想要的,大约四分之一的工作。

答案 2 :(得分:1)

您的选择器中缺少[

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

应该是:

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

您应该在'的值附近添加data_id,因此最终结果应为:

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

答案 3 :(得分:1)

你应该永远不会依赖浮点算法来迭代/索引变量。它们可能会让您陷入陌生的境地,更糟糕的是,不同的处理器处理浮点会有所不同。您的示例似乎没有浮点的任何副作用,但使用浮点实际上是一种不好的做法。