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

Jquery/Javascript仅在CSS更改后运行一次自定义函数,javascript,jquery,css,Javascript,Jquery,Css,我正在使用Jquery在基于web的电子表格应用程序中的单元格之间绘制线条。我通过混合背景图像、背景位置和背景重复来实现这一点。整个系统工作得非常好,允许我在应用程序中的不同单元之间进行映射 但是,我的Jquery/Javascript代码有一些问题 function draw_line(start_row, start_col, finish_row, finish_col){ //Change CSS background properties } function loadDat

我正在使用Jquery在基于web的电子表格应用程序中的单元格之间绘制线条。我通过混合背景图像、背景位置和背景重复来实现这一点。整个系统工作得非常好,允许我在应用程序中的不同单元之间进行映射

但是,我的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();
函数绘制线(开始行、开始列、结束行、结束列){
//更改CSS背景属性
}
函数loadData(){
对于(i=0;i
问题是,尽管for循环应该对所有涉及的元素运行多次,但实际上它只运行一次。但是,如果我注释掉draw_line函数,for循环将执行正确的次数,并且所有元素都将放置在电子表格中

我也试过运行setTimeout,但是没有用。以前有人经历过这种行为吗?(仅供参考,我正在FF上运行jQueryV1.6.4)


希望有人能帮忙。谢谢

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

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

查看您的函数
loadData
,变量
开始行
开始列
在哪里声明和定义?Kevin这两种方法都跳过了100行代码,所以我只是略过了这两行,以使问题更清楚。它们都是数组的一部分,在将元素添加到电子表格之前就被加载了。听起来像是典型的闭包错误使用问题。如果看不到你的全部代码,没有人能够帮助你。您可能在不知情的情况下删除了为我们压缩代码时导致问题的代码。此修复了该问题。奇怪的是,我几乎总是使用var关键字,因为这是一个很好的实践,但在这种情况下我忘了使用。不过,这并没有改变我期望该语言有其他行为的事实——通常,如果我想使某个东西成为全局的,我会将它声明为全局的,或者在我的函数之外声明它。这真是让人大开眼界,我感谢你的评论!去展示松散类型的语言如何以意想不到的惊喜悄悄地出现在您的面前。谢谢您可能希望使用
strict
模式进行调查,这可能是一个错误。有关更多信息,请参阅。
for (var i = 0; i < values; i++)