2012-02-04 33 views
1

新的JavaScript在这里。我有一个简单的表单,它接受用户提交的内容并将其放入数组中。当提交一个特定的单词时,一个提示会出现一个来自该数组的随机值。我觉得我在这里的问题是,事情并没有真正推入阵列,作为提示将返回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> 
+0

你可以发布你工作的Html吗?什么是餐馆? – 2012-02-04 15:44:02

+0

当然。现在它已经修复了,所以我也可以把它解决。 – user1189459 2012-02-05 02:02:11

回答

0

事情推入阵,但他们不再次取出。

的片断res_array[Math.floor(Math.random() * res_array.length)];只执行一次,在用户提交任何值之前。 res_array是空的,在这个时候,所以服用一个随机元素从它导致undefined。这是提示。

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

+0

谢谢!最后,有很多与它的问题,但绝对感谢您的时间。 – user1189459 2012-02-05 02:01:47