【发布时间】:2020-01-02 22:07:58
【问题描述】:
我在 $(document).ready(function () {...}); 中遇到 jquery 代码问题,有时在页面加载时没有执行。
如何强制执行函数?或者如果与异步问题有关,则强制代码等待函数完成?
<!DOCTYPE html>
<html>
<head>
<link rel='icon' href='images/favicon.ico' type='image/x-icon'/ >
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
var fileReading = new Array();
$.get('output.txt', function(data){
fileReading = data.split(',');
fileReadingLength = fileReading.length-1;
});
$(document).ready(function () {
$("#img1").attr({ "src": fileReading[fileReadingLength-1] });
$("#img2").attr({ "src": fileReading[1] });
$("fileReadingLength").text(fileReadingLength);
for (i = 0; i <= fileReadingLength; i++) {
$('body').append('<br><img id="img"'+i+' src="'+fileReading[i]+'">')
}
});
</script>
</head>
<body>
Number of images: <fileReadingLength></fileReadingLength> <br>
</body>
</html>
【问题讨论】:
-
为什么不将文档中的 get 准备好,然后在 get 中运行文档中的代码,这样您就知道您拥有所需的变量 - jsfiddle.net/fh21dz9v
-
@Debendra 不,不是。它的存在是为了让您可以将代码放在文档中的任何位置。
-
您提供的代码运行良好。在
.ready回调中添加一个console.log(),你会看到它确实在工作。 -
可以放置在任何地方,但如果在文档末尾使用它会有性能优势。
-
@Debendra 如果您将脚本放在那里,则不需要准备好文档 - 准备好文档的重点是它可以放在任何地方,并且会等到文档准备好,如果您将它放在文档的结尾,然后它的 dom 无论如何都准备好了