2012-02-04 60 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