Jquery / Javascript仅在CSS更改后运行一次自定义函数

时间:2011-11-04 02:22:58

标签: javascript jquery css

我正在使用Jquery在基于Web的电子表格应用程序中的单元格之间绘制线条。我通过混合使用 background-image background-position background-repeat 完成此操作。整个系统运行得非常好,并允许我在应用程序中的不同单元格之间进行映射。

但是,我在使用Jquery / Javascript代码时遇到了一些麻烦。

function draw_line(start_row, start_col, finish_row, finish_col){
    //Change CSS background properties
}

function loadData(){
    for (i = 0; i < values; i++){
        //Add element to spreadsheet - change CSS properties.

        //Draw line between the two cells
        draw_line(start_row, start_column, line, column);
    }
}

loadData();

问题在于,虽然 for 循环应该对所涉及的所有元素运行几次,但它实际上只会运行一次。但是,如果我注释掉draw_line函数,for循环会执行正确的次数,并且所有元素都会放在电子表格中。

我也尝试过运行setTimeout,但这没有帮助。以前每个人都经历过这种行为吗? (仅供参考,我在FF上运行JQuery v1.6.4)

希望有人可以提供帮助。谢谢!

1 个答案:

答案 0 :(得分:2)

我不知道这是否真的导致了你的问题,但它是错误且有风险的代码所以你应该修复它。这段代码:

for (i = 0; i < values; i++)

使用隐式声明的全局变量i。如果您正在运行的任何其他代码也在执行此操作,那么i的值将会被破坏并破坏您的for循环。

将该行改为此行以使i成为一个局部变量,以便其他任何东西都不会破坏它:

for (var i = 0; i < values; i++)