• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:乱数を配列へ格納(JavaScript))

乱数を配列へ格納する方法とエラーの原因

このQ&Aのポイント
  • JavaScriptで乱数を配列へ格納する方法について説明します。
  • 配列へ乱数を格納する際にエラーが発生する原因は、オブジェクトでサポートされていないメソッドまたはプロパティを使用しているためです。
  • 解決方法としては、配列の中身全てと比較するために使用しているメソッドやプロパティが正しくサポートされているか確認することです。

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.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に更新してみます。 これで解決するでしょう。

参考URL:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/js56jsoriversioninformation.asp
Doraemonster
質問者

お礼

ありがとうございました。 回線が細くIEのUPDATEに時間がかかるせいで、 検証も少々時間がかかりますが、 検証してみます。

その他の回答 (1)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

ブラウザは何? 質問のスクリプトを、そのまんま動かしてみたけど、動くよ。 <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 で確認。 「格納の時点でエラー」というのが勘違い、ということは無い?

Doraemonster
質問者

お礼

本当にありがとうございました。 IE6.0にUPDATEしたらうまくいきました。 と、いうかよく見たら手元の本に確かにArrayオブジェクトの pop、push、shift、unshiftメソッドはIE5.0以前は対応していないと 書いてありました。(汗) お世話になりました。

Doraemonster
質問者

補足

早速のアドバイスありがとうございます。 IE5.0なんですが、同様にしてみたところ、 13行目で同じエラーが発生しました。 13行目が"if(check) {"なので、 numbers.push(number)だと思います。 ヴァージョンの問題なのでしょうか? ちなみに本当はonLoadでこの関数を呼び出していますが、 もちろん"make()"を呼び出す前に空の配列は宣言されていますよね。。。 とりあえずIE6.0に更新してみます。

関連するQ&A