这里有javascript的新功能。我有一个简单的表单,它接受用户提交的内容并将其放入数组中。提交特定单词时,会从数组中提示一个随机值。我认为我遇到的问题是事情实际上没有被推入数组,因为提示将返回undefined。
var res_array = [];
var restaurant = document.getElementById("restaurants");
var rand = res_array[Math.floor(Math.random() * res_array.length)];
function submit_res(){
if (restaurants.value !="end" && restaurants.value !="finish") {
alert('It got pushed');
res_array.push(restaurant);
return true;
} else {
alert('Selected restaurant: ' + rand);
}
}
现在这里是固定的 -
var res_array = [];
function submit_res(){
var restaurant = document.getElementById("restaurants");
if (restaurants.value !="end" && restaurants.value !="finish") {
res_array.push(restaurant.value);
} else {
var random_res = res_array[Math.floor(Math.random() * res_array.length)];
alert('Selected restaurant: ' + random_res);
}
return false;
}
HTML部分:
<form>
Restaurants: <input type="text" id="restaurants" name="restaurants" />
<input type="submit" value="Submit" onClick="return submit_res()"/>
</form>
答案 0 :(得分:0)
被推送到数组中,但是 再次被取出。
在用户提交任何值之前,代码段res_array[Math.floor(Math.random() * res_array.length)];
仅执行一次。 res_array
此时为空,因此从中获取一个随机元素会产生undefined
。这就是提示。
解决方案是将var rand = res_array[...];
移到else {}
子句中。