因此,我想构建一个非常简单的Web应用程序,其中用户输入一些文本,然后从同一文本创建一个段落。段落中的每个单词都在span标记内,因此当用户将鼠标悬停在其上时,该单词的同义词会显示在控制台上。
我很确定导致问题的代码部分是:
var lookupLink;
var data;
function preload(){
lookupLink = 'https://api.datamuse.com/words?ml=';
}
function changeWord(){
data = loadJSON(lookupLink+this.html())
var index = floor(random((Object.keys(data).length)));
console.log(data[index].word);
//the above console.log gives an error.
}
以下是完整的代码,以防万一:https://pastebin.com/ViNZ1jse
它没有记录该单词,而是显示:
Uncaught TypeError: Cannot read property 'word' of undefined
at p5.Element.changeWord (sketch.js:39)
我猜这是因为当我尝试记录它的属性之一时,数据对象尚未完成加载,但是我不知道该如何解决。
编辑:哦,我忘了提
还有一个问题,我可以从https://api.datamuse.com/words?ml=
链接加载数据,而不能从https://api.datamuse.com/words?rel_syn=
链接加载数据。
答案 0 :(得分:1)
https://p5js.org/reference/#/p5/loadJSON
loadJson会收到一个回调,该回调将在加载json时执行。 因此,我认为这将起作用:
loadJSON(lookupLink+this.html(), function(data) {
var index = floor(random((Object.keys(data).length)));
console.log(data[index].word);
})