[java script]NNでnullになる

このQ&Aのポイント
  • IEではうまく動作するが、NNでは動作しない問題の解決方法
  • NNのバグにより、範囲指定のチェックが正常に機能しない原因を解説
  • JavaScriptを使用したselectボックスの範囲指定がNNで正常に動作しない問題についての解説
回答を見る
  • ベストアンサー

[java script]NNでnullになる

selectボックスに西暦を表示しています。 このselectボックスを2つ用意して、範囲設定を行っているのですが、 範囲指定大小チェックのロジックを作り、IEでは正しく動作したのですが、 NNだと関数conf()内でdocument.test.FROM_YEAR.valueとdocument.test.TO_YEAR.valueの値をみてみると、nullになっていたためFORM_YEAR>TO_YEARと指定しても範囲指定大小チェックのif文が、必ずfalseになって 処理を続行してしまいます。 なぜ、IEではうまくいくのにNNだとうまくいかないのでしょうか? これってNNのバグ??? ~ソースコード(抜粋)~ <SCRIPT LANGUAGE="JavaScript"> <!-- function conf() { from = document.test.FROM_YEAR.value; to = document.test.TO_YEAR.value; if (from > to) { alert("年の指定に誤りがあります。"); return false; } } //--> </SCRIPT> <FORM NAME='test' ACTION='test.html' METHOD="post" onSubmit="return(conf())"> <SELECT NAME='FROM_YEAR'> <OPTION VALUE='2001'>2001 <OPTION VALUE='2002' SELECTED>2002 <OPTION VALUE='2003'>2003 <OPTION VALUE='2004'>2004 <OPTION VALUE='2005'>2005 <OPTION VALUE='2006'>2006 </SELECT>年 <SELECT NAME='TO_YEAR'> <OPTION VALUE='2001' SELECTED>2001 <OPTION VALUE='2002'>2002 <OPTION VALUE='2003'>2003 <OPTION VALUE='2004'>2004 <OPTION VALUE='2005'>2005 <OPTION VALUE='2006'>2006 </SELECT>年 <INPUT TYPE='SUBMIT' NAME='SUBMIT' VALUE='登録'>

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

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

> なぜ、IEではうまくいくのにNNだとうまくいかないのでしょうか? NN の JavaScript では、Select オブジェクトの value はとれません。 いろいろやりかたはありますが、Select オブジェクトが持つ selectedIndex プロパティを使うのが簡単です。 //from = document.TTT.FROM_YEAR.value; //to = document.TTT.TO_YEAR.value; from = document.TTT.FROM_YEAR[document.TTT.FROM_YEAR.selectedIndex].value; to = document.TTT.TO_YEAR[document.TTT.TO_YEAR.selectedIndex].value; > これってNNのバグ??? 細かいところで NN と IE は JavaScript の仕様が違います。 どちらのブラウザでも見られるようにするのであれば、 navigator オブジェクトから名前とバージョンを取り出して 分岐するしかないです。 ↓は、本家 Netscape のマニュアルです。 http://developer.netscape.com/docs/manuals/communicator/jsref/index.htm 参考URLには、selectedIndex のところのURLを載せておきます。

参考URL:
http://developer.netscape.com/docs/manuals/communicator/jsref/choi2.htm#1014626
forester
質問者

お礼

ありがとうございました。 おかげでNNでもちゃんと動いてくれるようになりました。

関連するQ&A

  • select値でのフォームのaction値の変更

    以下のようなフォームでselectの値によって PHPでactionのURLを変更させるようなことは出来るでしょうか。 <form name="form" method="GET" action="ここをselect値により変更"> <input type="text" name="word" id="word" value="" /> <select name="select" id="select"><option selected="selected" value="01">値01</option> <select name="select" id="select"><option selected="selected" value="02">値02</option> <select name="select" id="select"><option selected="selected" value="03">値03</option> </select> </form> 以上、どうぞ宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • selectメニューのselectedの位置をJavaScriptで移動させたい。

    selectメニューで困っています。 下のようなselectメニューをクリアボタンを使って一番上の「------」まで移動させたいのです。 IEやNN4.7はきっちり動くのですが、NN6.2で上手く動きません。 NN6だけは、かたくなに「ゲームで」に戻ろうとします。 「ここ」と書いた所を document.JTform.play_l.options[0].defaultSelected="true"; document.JTform.play_l.options[1].defaultSelected="false"; document.JTform.play_l.options[2].defaultSelected="false"; document.JTform.play_l.options[3].defaultSelected="false"; に増やしてみたのですが、変わらないみたいでした。 なにか他に良い方法はないでしょうか? <html> <Script Langage="JavaScript"> function init_func() { document.JTform.play_l.selectedIndex=0; document.JTform.play_l.options[0].defaultSelected="true";<!--ここ--> document.JTform.play_l.index=0; } </Script> <form name="JTform"> <select name="play_l"> <option value="">--------------------</option> <option value="1">犬と</opne> <option value="2">ラジコンで</opne> <option value="3" selected>ゲームで</opne> </select> <INPUT TYPE="submit" VALUE="さあ、遊ぼう"> <INPUT TYPE="reset" VALUE="クリア" Onclick="init_func()"> </form> </html>

  • Rails のコンボボックス(select)を生成する時の tabindex 属性の指定の仕方について

    Rails でコンボボックスを作るときに下記の記述でタブインデックスの属性が指定できると思っていたのですが、属性が付加されません。 どなたかご教授おねがいします。 <%= select 'data', 'id', {'test1' => 1, 'test2' => 2}, {:selected => 1, :tabindex => 5} %> ※下記のようにソースが生成されてしまって『tabindex』が指定できない <select id="data_id" name="data[id]"><option value="1" selected="selected">test1</option> <option value="2">test2</option></select>

  • NNで動く書き方を教えてください

    CGIに検索のキーワードを渡すために、セレクトメニューを2つ使って、キーワードを選ぶ仕組みを、表示・非表示の定義をjavascriptで下記のように書きました。 function menu(form) { if (form.mif[0].selected){ m1.style.display=''; m2.style.display='none'; m3.style.display='none'; } if (form.mif[1].selected){ m1.style.display='none'; m2.style.display=''; m3.style.display='none'; reSel(document.mm2.keyword.options); } if (form.mif[2].selected){ m1.style.display='none'; m2.style.display='none'; m3.style.display=''; reSel(document.mm3.keyword.options); } } ところが、NNではエラーになってしまいます。 NNでも上のセレクトメニューを選択すると、下のセレクトメニューの内容が変わる動きを実現できるよい書き方を教えてください。

  • document.form で nullまたは・・・jsエラー

    いつもお世話になってます。解決方法を教えてください。 抜粋します。 --- disp.php (元のphpファイル) <form name="dispfm"> <? $test1 = "test1"; $test2 = "test2"; ?> <select name="select1" onchange="get_msg(this)"> <option value="aaa"><?=$test1;?></option> <option value="bbb" selected><?=$test2;?></option> </select> <textarea name="ta1"><?=$msg;?></textarea> </form> --- .js function get_msg(obj){ var no = obj.form.select1.options[obj.form.select1.selectedIndex].value; location.herf="chk.php?&type=select&no="+no;  //ここまでは通っていることは確認できている } --- chk.php <? if(type == "select"){ $query = "--- SQL ---"; $rlt = mysql_query($query); $msg = mysql_result($rlt, 0);  //ここまでもalertにて通っていることを確認済み //SQLも値とれている ?> <script type="text/javascript"> <!-- document.dispfm.ta1.value = $msg;<---☆ここでjsエラー(Nullまたはー) //★ここあたり //--> </script> <?exit; } ?> --- ☆の部分で「Nullまたはオブジェクトではありません」となり、 元のdisp.phpへ戻ることなく、nullページ(空白何も表示なし)となってしまいます。 ソースをみてもjs部分が書いてあるだけです。 form名とせずにform[0]でしてみたり、getElementByIdでも試しましたが、一向に動きません。 chk.phpでやりたいことは、選んだリストの値をもとに、SQLでtextareaにセットする値を取得する、それを画面を新たに読み込まずにセットしたい、また既に入力された他の値をそのまま残したい。 宜しくお願いします。

  • VBAでJavaScriptを動かす方法

    <SELECT name="Mgr" onchange="Chg(this,1)"> <OPTION selected value="9999999">==選択==</OPTION> <OPTION value="1">a</OPTION> <OPTION value="2">b</OPTION> <OPTION value="3">c</OPTION> </SELECT> 上記のタグで VBAから objIE.Document.forms(0).Mgr.Item(2).Selected = True とSelectタグを選択したときにChg(this,1)を動かす方法を教えてください。 objIE.Navigate "JavaScript:Chg(this,1)"とやっても動きませんでした。

  • 生年月日・年月日のフォームが表示されない

    お世話になります。 下記のタグでは、表示されません。 サーバーの問題なのか、タグの問題かわかりませんので、 まず、タグを見て頂けませんか? よろしくお願いします。 ------------------------------------------------ <td width="30%">生年月日</td> <td width="70%"><script type="text/javascript"> document.write("<select name=\\"296643_year\\">"); for(i=1900;i<2010;i++){ if(i==1950){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); } }document.write("</select>"); document.write(" 年 "); document.write("<select name=\\"296643_month\\">"); for(i=1;i<13;i++){ if(i==1){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); }} document.write("</select>"); document.write(" 月 "); document.write("<select name=\\"296643_day\\">"); for(i=1;i<32;i++){ if(i==1){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); }}document.write("</select>"); document.write(" 日 "); </script> <br><font size="1"></font></td> </tr> <tr> ---------------------------------------------------------------- <td width="30%">電話の場合の日時</td> <td width="70%"> <script type="text/javascript"> document.write("<select name=\\"296652_year\\">"); for(i=2009;i<=2010;i++){ if(i==2009){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); } } document.write("</select>"); document.write(" 年 "); document.write("<select name=\\"296652_month\\">"); for(i=1;i<13;i++){ if(i==4){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); } } document.write("</select>"); document.write(" 月 "); document.write("<select name=\\"296652_day\\">"); for(i=1;i<32;i++){ if(i==23){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); }} document.write("</select>"); document.write(" 日 "); document.write("<select name=\\"296652_hour\\">"); for(i=0;i<24;i++){ if(i==0){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); } } document.write("</select>"); document.write(" 時 "); document.write("<select name=\\"296652_minute\\">"); for(i=0;i<60;i=i+5){ if(i==0){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); }} document.write("</select>"); document.write(" 分 "); </script><br><font size="1"></font></td> </tr> <tr>

    • ベストアンサー
    • HTML
  • ドコモのSELECTタグ

    ドコモのXHTMLのサイトを作っていますが、 1ページ内のSELECTタグの上限はありますでしょうか? SA700iでは15個しか表示されませんでした。 また、これは端末毎に違ってくるのでしょうか? --------------------------------------------- <form> <select name=test1><option value=1></select> <select name=test2><option value=1></select> <select name=test3><option value=1></select> ・ ・ ・ <select name=testn><option value=1></select> </form> --------------------------------------------- 宜しくお願いします。

    • ベストアンサー
    • HTML
  • 日付を取得するスクリプト

    JavaScriptに関して質問させていただきます。 下記のようなフォーム記述にたいして、 selectedが現在月にくるようなスクリプトはありますでしょうか? 例えば、7月であれば、7月がアクティブになるようにしたいです。 日付を表示させるスクリプトはわかるのですが、 どのようにselectedとして表示させるのが分かりません。。。 参考になるスクリプトファイルを紹介しているURL、もしくは スクリプトを紹介してくれる方、どうぞご教授お願いします。 <SELECT NAME="mon" size="1"> <option value="" selected> <option value="01">01 <option value="02">02 <option value="03">03 <option value="04">04 <option value="05">05 <option value="06">06 <option value="07">07 <option value="08">08 <option value="09">09 <option value="10">10 <option value="11">11 <option value="12">12 </SELECT>月

  • VBScriptでHTMLのセレクトボックスで表示されている値に指定したい

    VBScriptでHTMLのセレクトボックスで表示されている値(value)に指定したいと思っています。どのようにすればよいのでしょうか?詳しくは下記参照。 もし、VBSで無理であるのならほかの言語で可能な言語を教えていただきたく思います。 例:”value_1”を指定してVBSで選びたい <select name="select_name" onchange="select_onchange"> <option value="value_1">value_1_1</option> <option value="value_2">value_2_2</option> </select> (注意) 下記のように位置情報で指定するのではなく、valueの値(value_1)や表示されている値(value_1_1)でしたいと思っています。 IEオブジェクト.Document.フォーム名.コンボボックス名.selectedIndex = 0からの番号

専門家に質問してみよう