在 p5.js 中使用来自 Datamuse API 的 JSON 数据时遇到问题
trouble using JSON data from Datamuse API in p5.js
所以我想构建一个非常简单的网络应用程序,用户可以在其中输入一些文本,然后根据相同的文本创建一个段落。段落中的每个词都在一个 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=
link 而不是 https://api.datamuse.com/words?rel_syn=
link 加载数据。
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);
})
所以我想构建一个非常简单的网络应用程序,用户可以在其中输入一些文本,然后根据相同的文本创建一个段落。段落中的每个词都在一个 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=
link 而不是 https://api.datamuse.com/words?rel_syn=
link 加载数据。
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);
})