【发布时间】:2015-01-21 08:58:06
【问题描述】:
我是 JavaScript 新手,我想从我的数组中取出三个随机元素,它们需要不同。我已经设法得到三个不同的元素,然后我尝试通过 split 方法只取一个元素一次。但显然这并不起作用,可能有很多错误,因为这是我的第一个脚本之一。它有时也会说“未定义”。
HTML:
<span id="tot1"></span>, <span id="tot2"> und </span> und <span id="tot3"></span>
Javascript:
function getNumber() {
random = Math.floor(Math.random() * students.length);
students.splice(random,1);
return random;
}
students = new Array("Paul", "Jan", "Fabian D.", "Fabian K.", "Lennard",
"Robin", "Angelique", "Joyce", "Sarah", "Ajlin",
"Enes", "Leon", "Boran", "Joshua")
getNumber();
tot1 = students[random];
getNumber();
tot2 = students[random];
getNumber();
tot3 = students[random];
document.getElementById('tot1').innerHTML = tot1;
document.getElementById('tot2').innerHTML = tot2;
document.getElementById('tot3').innerHTML = tot3;
【问题讨论】:
-
tot1 = students[random] 当该语句命中时,随机未定义。 random 是 getNumber 函数内的局部变量,但一旦该函数退出,该局部变量就不再可访问。应该是 tot1 = students[getNumber()];或 var RandomNumber = getNumber(); tot1 = 学生[随机数];
-
@frenchie 如果没有
var或类似的关键字将random声明为本地,它将作为全局泄漏。 stackoverflow.com/questions/1470488 -
通常你会像这样访问
return变量:var my_return_var = getNumber();就像@JonathanLonowski 提到的那样,你的变量表现得像全局变量,很容易在更大的代码中导致问题。 -
如果我的解决方案不适合你,请告诉我。
-
欢迎来到 StackOverflow!请参阅"Should questions include “tags” in their titles?",其中的共识是“不,他们不应该”。
标签: javascript jquery html arrays random