【问题标题】:Javascript - pushing values into an array returns undefinedJavascript - 将值推入数组返回未定义
【发布时间】:2012-02-04 15:09:43
【问题描述】:

这里是新的 javascript。我有一个简单的表单,它将用户提交的内容放入数组中。提交特定单词时,提示会从数组中随机出现一个值。我认为我在这里遇到的问题是实际上并没有将事物推入数组,因为提示将返回未定义。

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>

【问题讨论】:

  • 你能发布你正在处理的 Html 吗?什么是餐厅?
  • 当然。现在已经修好了,所以我也可以把它贴出来。

标签: javascript arrays push undefined


【解决方案1】:

东西正在被推入数组,但它们没有再次被取出。

在用户提交任何值之前,sn-p res_array[Math.floor(Math.random() * res_array.length)]; 只执行一次。 res_array 此时为空,因此从中取出一个随机元素会导致 undefined。这是提示的内容。

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

【讨论】:

  • 谢谢!最后,有很多问题,但绝对感谢您的时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多