gpt4 book ai didi

javascript - 为什么我只从 javascript for 循环中获取最后一项?

转载 作者:行者123 更新时间:2023-11-30 10:16:15 24 4
gpt4 key购买 nike

<分区>

我已经尝试搜索这个问题,并发现了很多人提出的问题,他们的 for 循环有问题,而且它只返回最后一个元素。尽我所能,我只是不明白我在这里做错了什么。

我真的是 Javascript 的新手,所以我认为我遇到了闭包的问题?我正在写的应该是从 Urbandictionary API 返回的 JSON 中获取一些数据。 JSON 提取有效,但我使用该数据构建 div 的 for 循环无法正常工作。

function word(term, def, example)
{
this.term = term;
this.def = def;
this.example = example;
}

var lexicon = ['highway+salute', 'score', 'ya+heard+me', 'utz'];

var color = ['reddy', 'bluey', 'greeny', 'tanny', 'darky'];

for (var i = 0; i < lexicon.length; i++) {

$.getJSON('http://api.urbandictionary.com/v0/define?term=' + lexicon[i],
function(data){
lillyLivered = [];
lillyLivered.push(new word(data.list[0].word, data.list[0].definition, data.list[0].example));
console.log(lillyLivered);

$('.container-fluid').html('<div class="row message unread">' +
' <div class="col-xs-12 col-sm-6 col-lg-3 malok ' + color[i] + ' id="">' +
'<div class="row dict">' +
'<div class="col-xs-9 col-sm-9 col-lg-9">' +
'<h3 class="term term0">' +
lillyLivered[i].term +
'</div><div class="col-xs-3 col-sm-3 col-lg-3">' +
'<div class="col-xs-3 col-sm-3 col-lg-3">' +
' <span class="step size-32"><i class="icon ion-ios7-world"></i></span>' +
'</div></div>' +
'<div class="row dict"><div class="col-xs-12 col-sm-12 col-lg-12">' +
'<p class="definition definition0">' +
lillyLivered[i].def +
'</p><p class="eg eg0">' +
lillyLivered[i].example +
'</p></div></div></div>'
);
}
)};

我这里有一个 fiddle :http://jsfiddle.net/orenthal/5X96B/

如果我使用 lillyLivered[0],这段代码会有些效果。如果我使用 lillyLivered[i],它根本不会加载。我收到以下错误:

Uncaught TypeError: Cannot read property 'term' of undefined (anonymous function)

我被它弄糊涂了。 lillyLivered 的控制台输出仅显示 lillyLivered 数组中索引位置 2 的项目。在这种情况下,“你听到我了”:

lillyLivered
[ word
def: "Do you understand me? [ya heard] popular in New Orleans. the phrase is suppose to come after a sentence."
example: "Say brah, I'm chillin here in Orlando, ya heard me. ↵-C-murder's innocent, ya heard me."
term: "ya heard me"

我认为可能存在问题是因为对 lillyLivered[i].term 等的调用...包含在与调用相同的 for 循环中JSON数据?所以我试着用两个循环来做这件事。

我创建了一个新的 for 循环,负责创建 div 并从 lillyLivered 数组输出项目,但我在这里遇到了同样的问题。

Uncaught TypeError: Cannot read property 'term' of undefined 

但这有助于解决其中一个问题,即 lillyLivered 的控制台输出现在列出了词典中的所有四个单词及其定义和示例。

lillyLivered
[word, word, word, word]

我这里有一个 fiddle : http://jsfiddle.net/orenthal/5bTrJ/

我觉得我很笨,在这里漏掉了一些非常明显的东西。

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