运行JS在页面加载时不起作用,但是在其他情况下

时间:2018-12-28 17:38:28

标签: javascript jquery

我正在使用AJAX和jQuery将一些JSON数据提取到HTML表中。 该脚本正在生成带有表数据元素的表行,并且工作正常。

我需要编写另一个脚本来计算表行数。

从逻辑上讲,我去了

let rows = $('table tr').length
console.log(rows)

在页面加载(例如$(document).ready)上运行此命令时,控制台输出的长度为0。

但是,在其他任何事件(例如,单击)上运行它都可以并输出正确的长度。

据我了解,浏览器会在加载任何表行之前运行计数脚本。为什么会这样?它在代码中比表生成脚本晚出现。

如何使其在页面加载时正常工作?干杯。

1 个答案:

答案 0 :(得分:0)

马修·赫伯斯特(Matthew Herbst)所说的完全正确。尽管由于您使用的是jQuery,并且根据http://api.jquery.com/jquery.ajax/上的文档,但我还是建议您使用.done函数(或者可替代地,使用成功回调)。 例子:

完成方法:

$.ajax({
    url: "http://example.com/getRows.php",
})
.done(function( data ) {
    // data received
    doWhateverHere(); 
});

成功回调:

$.ajax({
    url:"http://example.com/getRows.php",  
    success:function(data) {
      // data received
      doWhateverHere(); 
    }
});