为什么以下代码大部分时间显示undefined
?
var fragOne = ["From morning until night", "Most pastors in church", "Hollywood movies in the 21st century", "Never disrespect anyone unless"];
var fragTwo = ["start after the weekend", "the Christians nowadays", "my friend Jacob in Class", "because of snowfall during winter"];
var fragThree = ["some girls in the class.", "intelligent Pilots in the UK.", "Several girls in my complex.", "If I believe in God."];
var button = document.getElementById("btn");
button.addEventListener("click", function(){
var displaying = document.getElementById("display");
var randomOne = Math.floor(Math.random()*fragOne.length);
var randomTwo = Math.floor(Math.random()*fragTwo.length);
var randomThree = Math.floor(Math.random()*fragThree.length);
var combineRandom = randomOne+randomTwo+randomThree;
display.innerHTML = fragOne[combineRandom]+" "+fragTwo[combineRandom]+" "+fragThree[combineRandom];
console.log(fragOne[combineRandom]+" "+fragTwo[combineRandom]+" "+fragThree[combineRandom]);
});
答案 0 :(得分:1)
基本上你需要获取随机索引并从数组中获取值。
var combineRandom = fragOne[randomOne] + " " + fragTwo[randomTwo] + " " + fragThree[randomThree];
display.innerHTML = combineRandom;
console.log(combineRandom);
在编写时,您添加所有随机索引并将其用于任何数组以获取元素。获得undefined
的原因是,您的索引可能比数组中的项目大。这是数组或对象的常见行为,以及获取undefined
的未定义属性。
答案 1 :(得分:0)
您将三个数字randomOne
,randomTwo
和randomThree
相加,所有数字都可以取0到1之间的值(Math.random
返回0到1之间的值并乘以数组长度为4)。因此,如果您在索引中处理元素的总和,那么您可以轻松地超出数组的长度,因此您获得undefined
的原因。
答案 2 :(得分:0)
你在代码中犯了一个错误,你不需要加上随机数,只需用它们来获取随机引用,见下文:
不需要此代码:
var combineRandom = randomOne+randomTwo+randomThree;
只需执行此操作并适应您的html渲染
console.log(fragOne[randomOne]+" "+fragTwo[randomTwo]+" "+fragThree[randomTh`ree]);