2012-02-04 7 views
1

新しいjavascriptがここにあります。私はユーザーが提出したものを配列に格納する単純なフォームを持っています。特定の単語が送信されると、配列からランダムな値がプロンプトに表示されます。私がここにいると思う問題は、プロンプトが定義されていないため、実際に配列にプッシュされていないことです。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); 
    } 
} 

は今ここに1つのアップ固定されている -

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を投稿できますか?レストランとは? –

+0

それは今修正されているので、私もそれを置くことができます。 – user1189459

答えて

0

観光情報は、配列の中に押し込まれてですが、彼らはないです再び取り出された。

スニペットres_array[Math.floor(Math.random() * res_array.length)];は、ユーザーが値を送信する前に一度だけ実行されます。 res_arrayはこの時点では空ですので、ランダムな要素をとるとundefinedとなります。これがプロンプトされます。

解決策はvar rand = res_array[...];else {}句に移動することです。

+0

ありがとう!結局、それには多くの問題がありましたが、間違いなくあなたの時間に感謝します。 – user1189459

関連する問題