我正在使用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)
希望有人可以提供帮助。谢谢!
答案 0 :(得分:2)
我不知道这是否真的导致了你的问题,但它是错误且有风险的代码所以你应该修复它。这段代码:
for (i = 0; i < values; i++)
使用隐式声明的全局变量i
。如果您正在运行的任何其他代码也在执行此操作,那么i
的值将会被破坏并破坏您的for
循环。
将该行改为此行以使i
成为一个局部变量,以便其他任何东西都不会破坏它:
for (var i = 0; i < values; i++)