jQuery在$(document).ready(function()内运行函数{

jQuery在$(document).ready(function()内运行函数{,jquery,document-ready,onload-event,Jquery,Document Ready,Onload Event,我在这里做错了什么?为什么writeQuestions没有在加载时运行(不是onclick..) (在我的代码中,.one()行被注释掉) 当我这样做时:window.onload=writeQuestions;效果很好。你试过 $.getJSON("JavaScript/questions.json", function(data) { questions = data; writeQuestions(); }); 在您的示例中,writeQuestions将在getJSON

我在这里做错了什么?为什么
writeQuestions
没有在加载时运行(不是onclick..)

(在我的代码中,
.one()
行被注释掉)

当我这样做时:
window.onload=writeQuestions;
效果很好。

你试过

$.getJSON("JavaScript/questions.json", function(data) {
    questions = data;
    writeQuestions();
});
在您的示例中,
writeQuestions
将在
getJSON
调用返回之前被调用

编辑正如Fosco在其回答中指出的,您在此处将
问题
声明为一个全局变量,因为您没有使用
var
关键字。这可能会起作用,但这不是一个好的做法,而且容易出现错误。最好重新编写为:

$.getJSON("JavaScript/questions.json", function(data) {
    writeQuestions(data);
});
writeQuestions()在返回JSON结果之前正在运行。请将函数调用放入回调函数中

$(document).ready(function() {  
     $.getJSON("JavaScript/questions.json", 
          function(data) { questions = data; writeQuestions(); }
     ); 
}); 

此外,我还建议更新writeQuestions()函数以接受参数,并以这种方式传递问题。我很惊讶它能起作用,因为存在变量范围问题。

您的问题是否加载到.getJSON()中? 如果是这样的话,试着成功

$.getJSON("JavaScript/questions.json", function(data) {
    questions = data;
}).success(function() {writeQuestions();)

您的问题是否加载到.getJSON()中?它可以工作!但是我怎么知道结果还没有返回?在我的代码中执行
writeQuestions
之前,它不应该被返回吗?@ilyad否,getJSON函数异步运行。它开始这样做,并继续运行其余的代码。在getJSON调用中提供的匿名函数就是运行af的函数返回结果。这是您放置需要接收数据的代码的地方。
$.getJSON("JavaScript/questions.json", function(data) {
    questions = data;
}).success(function() {writeQuestions();)