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

Jquery/Javascript only running a custom function once after CSS changes

本文关键字:自定义函数 一次 运行 Javascript CSS 改变 Jquery      更新时间:2023-09-26

我正在使用Jquery在基于web的电子表格应用程序中的单元格之间画线。我通过混合使用background-imagebackground-positionbackground-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,但没有帮助。有人经历过这种行为吗?(仅供参考,我正在运行JQuery v1.6.4,在FF上)

希望有人能帮忙。谢谢!

我不知道这是否真的导致了你的问题,但它是坏的和有风险的代码,所以你应该修复它。这一行代码:

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

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

将这一行更改为以下内容,使i成为一个局部变量,因此没有其他东西可以破坏它:

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