2
ボタンをクリックすると、テキストが3秒ごとに変更されます。私はsetIntervalを使用していますが、console.logで数値が変わるのを見ることができますが、テキストは変更されていません。理由はわかりません。setIntervalを使用してAPIからのテキストを置き換えます
setInterval(function() {
var quote = jokesArray[jokeNum];
console.log(jokeTxt.innerHTML = quote);
}
setInterval(function() {
if (jokeTxt.innerHTML !== "") {
jokeTxt.innerHTML = "";
jokeNum++;
jokeTxt.innerHTML = jokesArray[jokeNum];
}
setInterval(function() {
var quote = jokesArray[Math.floor(Math.random() % 586) + 1];
console.log(jokeTxt.innerHTML = quote);
全スクリプト:あなただけではなく、複数のジョークの配列よりも、一度に一つの冗談を返すを使用している
function main() {
var myApi = "https://api.icndb.com/jokes/random";
var xhttp = new XMLHttpRequest();
var jokesArray = [];
var randomIndex = Math.random();
var randomizer = (randomIndex % 586) + 1;
var jokeNum = Math.floor(randomizer);
var jokeTxt = document.getElementById("jokeTxt");
xhttp.onreadystatechange = function() {
if (xhttp.readyState == XMLHttpRequest.DONE) {
var jokesJSON = JSON.parse(xhttp.responseText);
var jokes = jokesJSON.value.joke;
for (var i = 0; i < jokes.length; i++) {
jokesArray.push(jokes);
}
//allJokes = jokesArray[jokeNum];
setInterval(function() {
var quote = jokesArray[Math.floor(Math.random() % 586) + 1];
console.log(jokeTxt.innerHTML = quote);
},3000);
}
}
xhttp.open("GET", myApi, true);
xhttp.send();
}
var myBtn = document.getElementById("btn");
myBtn.onclick = main;
'Math.random()'リターンは '' [0..1) 'にfloat'。 'Math.random()* 1000%jokes.length'を試してみてください –