Javascript - 将值推送到数组中返回undefined

时间:2012-02-04 15:09:44

标签: javascript arrays push undefined

这里有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>

1 个答案:

答案 0 :(得分:0)

被推送到数组中,但是 再次被取出。

在用户提交任何值之前,代码段res_array[Math.floor(Math.random() * res_array.length)];仅执行一次。 res_array此时为空,因此从中获取一个随机元素会产生undefined。这就是提示。

解决方案是将var rand = res_array[...];移到else {}子句中。