gpt4 book ai didi

javascript - 回调未定义和其他故事

转载 作者:行者123 更新时间:2023-12-02 15:25:24 25 4
gpt4 key购买 nike

我得到了以下脚本,该脚本无法正常工作。我了解 getJSON 的异步性质,因此我尝试构建一个回调函数 (jsonConsoleLog),该函数应该在 getJSON 分配给 var (myJson = json;) 之前执行)。在 Chrome 中运行调试后,我得到了两件事:A) 调试将 getJSON 函数内的 jsonConsoleLog 调用突出显示为未定义。B) 控制台抛出 TypeError: Cannot read property '0' of null for var Friends = myJSON[0].friends;,这意味着整个函数不起作用。从周六开始我就一直在和它作斗争,我真的不知道该怎么办。我的回调函数显然有问题,但如果我知道的话请射击我。帮忙?

var myJSON = null;
var main = document.getElementsByClassName('main');
var sec = document.getElementsByClassName('sec');

function getJSON(jsonConsoleLog){
$.getJSON('http://www.json-generator.com/api/json/get/cpldILZRfm? indent=2', function(json){
if (json != null){
console.log('Load Successfull!');
};
if (jsonConsoleLog){
jsonConsoleLog(json[0].friends);
}
myJSON = json;
});
};

function jsonConsoleLog(json) {
for (var i = 0; i < json.length; i++) {
console.log('friend: ' + friends[i]);
};
};

getJSON();

var friends = myJSON[0].friends;

function myFn1(){
for(var i = 0; i < friends.length; i++) {
main[i].innerHTML = friends[i].id;
};
};

function myFn2(){
for(var i = 0; i < friends.length; i++) {
main_div[i].innerHTML = friends[i].name;
};
};

main.innerHTML = myFn1();
sec.innerHTML = myFn2();

最佳答案

第一个问题是因为您的函数 getJSON 需要一个正式参数,您将其称为 jsonConsoleLog。但是您没有将任何参数传递给 getJSON。这意味着在 getJSON 内部,形式参数 jsonConsoleLog 确实是未定义的。请注意,由于您已将形式参数命名为 jsonConsoleLog,它与您希望调用的函数同名,因此在 getJSON 中您将无权访问功能。您需要做的是将函数作为参数传递:

getJSON(jsonConsoleLog);

第二个问题是我认为与 json 变量有关 - 它没有属性 0 (即当您尝试处理它时会发生错误作为数组并访问元素 0),这表明 json 返回为空,或者不是数组。

关于javascript - 回调未定义和其他故事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33730548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com