我正在使用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,但没有帮助。有人经历过这种行为吗?(仅供参考,我正在运行JQuery v1.6.4,在FF上)
希望有人能帮忙。谢谢!
我不知道这是否真的导致了你的问题,但它是坏的和有风险的代码,所以你应该修复它。这一行代码:
for (i = 0; i < values; i++)
使用隐式声明的全局变量i
。如果您正在运行的任何其他代码也在这样做,那么i
的值将被破坏并破坏您的for
循环。
将这一行更改为以下内容,使i
成为一个局部变量,因此没有其他东西可以破坏它:
for (var i = 0; i < values; i++)