【问题标题】:JavaScript Math / Looping Dynamically Creating Rows and ColumnsJavaScript 数学/循环动态创建行和列
【发布时间】:2012-05-09 11:09:25
【问题描述】:

所以,我有一小段代码可以生成行和列之间的空格。

它似乎工作正常;但是,当我将框的高度和宽度设置为 32 像素并将它们之间的空间设置为 8 像素时,框应该在的位置开始出现间隙。

如果我使用几乎任何其他数字,它们都可以工作,但我的想法当然是 32 和 8。

我想知道这是否是我循环创建盒子的方法,或者是否有一些我不理解的基础数学。

这是一个用相关代码设置的 jsFiddle:

http://jsfiddle.net/dondon/zMnuK/

如果您将 JS 部分中的“间距”修改为 7 或 9,间隙就会消失。 8(或4)是什么导致出现间隙?

感谢任何输入! :)

【问题讨论】:

    标签: javascript math loops


    【解决方案1】:

    这与具有相同 id 的多个盒子有关,并且它们都设置了 css,因此它们最终位于完全相同的位置。例如,创建的第三个框的 x 位置(x 与您的循环顺序垂直)为 88px,y 位置为 8px。然后很晚在第三行中出现一个 y = 88px 和 x = 8px 的框。已达到,因此 'box' + x + y; 对于这两个框是相同的。您不能拥有多个具有相同 id 的元素,因此之后任何事情都可能发生。

    简单的解决方法是改变:

    var boxid = "box"+x+y;
    

    收件人:

    var boxid = "box"+x+'_'+y;
    

    Updated JSFiddle

    【讨论】:

    • 啊,是的,谢谢!我开始怀疑类似的事情。随着我开始使网格越来越大,我看到越来越多的差距。
    【解决方案2】:

    当您分配 boxid 值时,似乎出现了别名,并且仅在间距等于 8 时发生。

    原来你有:

    var boxid = "box"+x+y;
    

    所以你可以有两个具有相同 id 的盒子

    改成:

    var boxid = "box"+x+"_"+y;
    

    【讨论】:

    • 当我收到 1 个新答案的通知时,我点击了提交……但历史是由胜利者书写的 =(
    猜你喜欢
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 2020-05-24
    • 2020-09-28
    相关资源
    最近更新 更多