[英]Access Marvel API Names
我正在尝试创建一个 function,它允许我随机单击奇迹名称。 但是,我尝试实现以下代码,但它只显示一个名称,不允许我单击不同的名称。 请帮忙。
var arr = data.data.results[1].name;
console.log(arr)
function nextItem() {
for (i = 0; i <arr.length; i++){
i = i + 1;
i = i % arr;
} return arr}
function prevItem () {
if (i===0) {
i = name;
}
i = i - 1;
return name[i]
}
document.getElementById('character-name').textContent = arr;
document.getElementById("next-btn").addEventListener('click', function (e){
document.getElementById("character-name").textContent= nextItem();
}
) });
我添加了 MARVEL API 属性和 object Marvel API Console.log的相关值的图片
最重要的是,您必须从数组中提取所有名称。 您当前仅选择元素 1 的名称。
var arr = data.data.results[1].name;
这应该更改为
var arr = data.data.results.map(_ => _.name);
// creates an array with only the names of the marvel heros
我将首先使用此处的算法随机打乱名称数组: https://stackoverflow.com/a/2450976/13050816
function shuffle(array) {
var currentIndex = array.length, temporaryValue, randomIndex;
// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
// And swap it with the current element.
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
对于你的例子,我会这样:
var arr = data.data.results.map(_ => _.name);
shuffle(arr)
let index = 0;
function nextItem() {
index++;
index % arr.length;
return arr[index];
}
function prevItem() {
index--;
if(index < 0) index = arr.length - 1;
return arr[index];
}
document.getElementById('character-name').textContent = arr[index];
document.getElementById("next-btn").addEventListener('click', function (e){
document.getElementById("character-name").textContent= nextItem();
)});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.