我不知道为什么这个随机引用生成器最常显示未定义

时间:2017-11-06 22:04:44

标签: javascript quotes

为什么以下代码大部分时间显示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]);

});

3 个答案:

答案 0 :(得分:1)

基本上你需要获取随机索引并从数组中获取值。

var combineRandom = fragOne[randomOne] + " " + fragTwo[randomTwo] + " " + fragThree[randomThree];

display.innerHTML = combineRandom;
console.log(combineRandom);

在编写时,您添加所有随机索引并将其用于任何数组以获取元素。获得undefined的原因是,您的索引可能比数组中的项目大。这是数组或对象的常见行为,以及获取undefined的未定义属性。

答案 1 :(得分:0)

您将三个数字randomOnerandomTworandomThree相加,所有数字都可以取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]);