電子書籍の厳選無料作品が豊富!

Javascriptで困っています。
詳しい方、是非教えて下さい。

HTMLのselectタグの内容が変更された時に処理を行う
Ajaxプログラムを書いています。

selectタグにid属性を付けて、id="selectPref"という
名称にしています。

インクルードした.jsファイルで、このselectPrefオブ
ジェクトが変更された時の処理を記述したいのですが、
変数に、

selectPref.valule

を代入した時点でランタイムエラーが発生します。
「"selectPref"は宣言されていません」
というメッセージ内容です。

しかし、その数行前のイベントハンドラで、selectPref
オブジェクトの値に変更があった事はちゃんと検知で
きています。

何が悪いのでしょうか?

なお、本件は、IE7.0で起こっている現象です。
Firefox3.0.4では、正常に(期待通りに)動作してい
るので、余計にIEで動かない理由が分かりません。

教えて頂けましたら幸いです。

以下、ソースから必要箇所のみ抜粋します。


==メインのHTML==

Headerセクション

<script type="text/javascript" src="lib/prototype.js"></script>
<script type="text/javascript" src="registration1.js"></script>

BodyセクションのFormタグ内

<select size="1" id="selectPref">
<option selected value="0">▼都道府県を選択</option>
</select>


==インクルードした.jsファイル==

prototype.jp は、version 1.6.0.3

registration1.jpは、下記の通り。

onload = init;
var pref_id;

function init() {
$("selectPref").onchange = prefDisp; //←この行は動いている
}

function prefDisp() {
pref_id = selectPref.value; //←この行がエラー
}

==以上==

A 回答 (2件)

function prefDisp() {


 // pref_id = selectPref.value; ←この行がエラー
 pref_id = $('selectPref').value; // このようにする
}
    • good
    • 0
この回答へのお礼

ありがとうございました。この方法で解決できました。

#Firefoxでは$()関数を呼び出さなくても処理できてしまうのですね。

お礼日時:2008/12/08 15:34

例です。



Event.observe(window,'load',init,true);
//windowのonloadにinitを登録

function init(){
Event.observe('selectPref','change',prefDisp,true);
//id=selectPrefの要素のonchangeにprefDispを登録
}

function prefDisp() {
var pref_id = this.value;// this が イベント発生元を示す
}
    • good
    • 0
この回答へのお礼

有難うございました。
取り急ぎ、LZ_1111様の方法で解決できましたが、こちらも試してみます。

どうもありがとうございます。

お礼日時:2008/12/08 15:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!