- ベストアンサー
乱数を配列へ格納する方法とエラーの原因
- JavaScriptで乱数を配列へ格納する方法について説明します。
- 配列へ乱数を格納する際にエラーが発生する原因は、オブジェクトでサポートされていないメソッドまたはプロパティを使用しているためです。
- 解決方法としては、配列の中身全てと比較するために使用しているメソッドやプロパティが正しくサポートされているか確認することです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> IE5.0なんですが、同様にしてみたところ、 あ、それかも。 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/js56jsmthpush.asp によると、push メソッドは、JScript 5.5 を要求していて、そのバージョンは IE5.0 では満たしていない(→参考URL)ので。 > とりあえずIE6.0に更新してみます。 これで解決するでしょう。
その他の回答 (1)
- a-kuma
- ベストアンサー率50% (1122/2211)
ブラウザは何? 質問のスクリプトを、そのまんま動かしてみたけど、動くよ。 <html> <script> numbers = new Array(); // 空の配列宣言。 function make() { while(numbers.length < 8){ check = true; number = Math.floor(Math.random() * 100);// ランダムに0~99までの整数を取得。 for(i = 0; i < numbers.length; i++) { // 今取得したものと同じ乱数がないか、 if(number == numbers[i]) { // 配列の中身全てと比較。 check = false; } } if(check) { numbers.push(number); // 取得した乱数を配列に格納。 } } // ここだけ追加してみた alert(numbers.length) for(i = 0; i < numbers.length; i++) { alert(numbers[i]) } } </script> <body> <input type=button value="make" onclick="make()"> </body> </html> # IE5.5 と NS7.0 で確認。 「格納の時点でエラー」というのが勘違い、ということは無い?
お礼
本当にありがとうございました。 IE6.0にUPDATEしたらうまくいきました。 と、いうかよく見たら手元の本に確かにArrayオブジェクトの pop、push、shift、unshiftメソッドはIE5.0以前は対応していないと 書いてありました。(汗) お世話になりました。
補足
早速のアドバイスありがとうございます。 IE5.0なんですが、同様にしてみたところ、 13行目で同じエラーが発生しました。 13行目が"if(check) {"なので、 numbers.push(number)だと思います。 ヴァージョンの問題なのでしょうか? ちなみに本当はonLoadでこの関数を呼び出していますが、 もちろん"make()"を呼び出す前に空の配列は宣言されていますよね。。。 とりあえずIE6.0に更新してみます。
お礼
ありがとうございました。 回線が細くIEのUPDATEに時間がかかるせいで、 検証も少々時間がかかりますが、 検証してみます。