• ベストアンサー

セレクトメニューをクッキーに書き込むには?

セレクトメニュー(URLs)にURLをつぎつぎに放り込んで、つぎにこのデータをクッキーに保存したいと想い、次のように書いてみました。この一文かどうかはわかりませんが、コンマがありません、というエラーが出ます。 data_for_cookie=document.form1.URLs.options.value; ホントに初歩的な知識が欠けていてこんなJavaScriptでさえわかりません。どうか御教示をお願いいたします。

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

  • ベストアンサー
noname#199778
noname#199778
回答No.2

補足されたソース見ました。 エラーになっているのは、「Set-Cookie:~」の行が原因でしょう。 これはPerlを使ったCGIでcookieを保存する時の書式です。 JavaScriptのケースでは、前回の回答に書いたように、「document.cookie=保存する内容」という形式で処理を記述する必要があります。 あと、Cookieを読み出す部分や書き込む部分で、このままではうまくないかなと思える点もあります。 前回の質問で提示したソースと同じようですので、それを元にしてお望みの動作を一応実装したソースを作ってみました。 こちらを試してみてください。 <html> <head> <title></title> <script type="text/javascript"><!-- getc=document.cookie+";"; x1=getc.indexOf("urls"); if (x1!=-1) { tem1=getc.substring(x1-1); x2=tem1.indexOf("="); x3=tem1.indexOf(";"); urls_data0=tem1.substring(x2+1,x3); urls_data=unescape(urls_data0); CkOpt=urls_data.split("<>"); } /* 以上、cookieの読み出しとデータの取得 */ function readOpt(){ if (x1!=-1){ for (i=1; i<CkOpt.length; i++){ document.form1.URLs.options[i]= new Option(); document.form1.URLs.options[i].text=CkOpt[i-1]; } } } /* ↑ページロード時にcookieがあった場合、そのデータを組み込む関数 */ function putOpt(){ n=document.form1.URLs.length; document.form1.URLs.options[n]= new Option(); document.form1.URLs.options[n].text=document.form1.url_in.value; document.form1.url_in.value="http://"; document.form1.url_in.focus(); } function f1move(){ n=document.form1.URLs.selectedIndex; if (n!=0){ parent.frame1.location.href=document.form1.URLs.options[n].text; } } function optDel(){ n=document.form1.URLs.selectedIndex; if (n!=0){ document.form1.URLs.options[n]=null; document.form1.URLs.options[0].selected=true; } } /* ↑特定のoptionを消去する関数 */ function cook(){ urls_data=""; if (document.form1.URLs.options[1]!=null){ for (i=1; i<document.form1.URLs.length; i++){ urls_data+=document.form1.URLs.options[i].text+"<>"; } exptm="Thu, 1-Jan-2030 00:00:00 GMT"; } else { urls_data="none"; exptm="Sat, 25-Oct-2003 00:00:00 GMT"; } putc="urls="+escape(urls_data)+"; expires="+exptm; document.cookie=putc; } /* ↑Cookieを書き込む関数 */ window.onload=readOpt; window.onunload=cook; /* ページロード時、ページアンロード時に関数を実行させる指定 */ // --></script> <style type="text/css"><!-- --></style> </head> <body> <form name="form1" onSubmit="putOpt(); return false;"> <input type="text" name="url_in" size="40" value="http://"> <input type="submit" value="追加"> <br> <select name="URLs"> <option selected>選択してください</option> </select> <input type="button" value="移動" onClick="f1move()"> <input type="button" value="削除" onClick="optDel()"> </form> </body> </html> 前回の質問のソースを元に、cookieを使ったものに改造しました。 cookieを利用した場合、打ち間違いなどで利用できなかったり不要になったりしたoptionを消すことができなくなる可能性があるので、それを回避するために選択されているoption項目を消去する機能を追加してあります。 そのため、ページの移動もボタンで決定するように変えました。 加えて、はじめからある「選択してください」のoption項目が選択されている場合には、「移動」も「消去」も動作しないようにしてあります。 また、cookieの保存はページが移動(アンロード)したタイミングで関数を処理させて実行するようにしています。 ついでに、追加したoptionの項目が無かったり消されたりしてデータが追加されていない状態の場合は、cookieを破棄するようにもしてあります。 その他、詳細については、行ごとに行われている内容を検証して把握してみてください。 上記ソースは一応、WindowsMe上のIE6、Netscape 7.1、Opera 7.11で動作確認を取りました。 私もJavaScriptでcookieにアクセスするソースをしばらく書いていなかったので、あまりスマートではない部分もあるかもしれません。 私も勉強になりました。 長々と失礼しました。 参考になれば幸いです。

tonka729
質問者

お礼

lead1976さま、\(^^)/ 素晴らしいですね。びっくりです。なんとお礼を申したらよいか分かりません。 ご覧の通り、表の中に入れて、もう一つのフォームと棲み分けさせています: http://tovalis.or.tv/dic/tangokensaku.htm 前回も、その完成度に感服いたしましたが、今回さらに仕様が細かくて使いやすいですね。 試しに、URLを入れて表示を試してみましたら、どういう訳か、今回は表示の実行がされていません。。。 前回のソースをもう一度見て調べているところです。ぱっと分かるほどに早くなりたいです。。。

tonka729
質問者

補足

lead1976さま、この文章は「お礼」のあと、書いて差し上げるものです。お詫びいたします。ちゃんと表示されるようになっていました。  どうも失礼しました。そして、もいいちど、丁寧に完全なスクリプトをプレゼントしていただき、ありがとうございました。勉強になりました。

その他の回答 (1)

noname#199778
noname#199778
回答No.1

現状では、なにがどうエラーになっているのかが良くわからないので、ちょっと具体的なところまでは踏み込めませんが… とりあえず、cookieにJavaScriptからデータを送り込む場合は、 document.cookie=cookieに保存するデータ; という書式を取ります。 なお、cookieに保存するデータの形式は、必ず「key名=データ」という形で、キーとデータとの対応関係を明記する必要があります(そうしないと、どこまでがどういったデータなのかが保存できませんし、利用できません)。 cookieからデータを読み出す場合は、 cookie_data=document.cookie; のように、変数の中にdocument.cookieを読み込んでやればよいです。 なお、cookieのデータは、通常そのままの形では利用できないと思います。 何かしらの加工をしてやって、取得したい値を取り出す処理を入れる必要があるでしょう。 こちらの詳細については、参考URLで解説されていますので、そちらに一度目を通してみると良いと思います。 ご質問文に書かれている一行は、cookieに書き込むためのデータを取りまとめる変数にフォーム内のセレクトメニューのオプションの値を渡そうとしている文のようですが、書式としてoptionsの連番を加えていないので、正常にデータを参照できないこともあるかもしれません。 この場合は、 data_for_cookie=""; for (i=0; i<document.form1.URLs.options.length; i++){ data_for_cookie+=document.form1.URLs.options[i].value+","; // 区切りをつけるために末尾にカンマを追加しています。 } こういった書式を取るのが良いのではないでしょうか。 ただ、おそらく、エラーメッセージと例示されている部分はあまり関連がないのではないかと思います。 具体的な問題のあるところを特定するには、スクリプトの内容を補足していただく必要がありそうです。 よろしければ、ソースを補足してみて下さい。

参考URL:
http://tohoho.wakusei.ne.jp/wwwcook.htm,http://tohoho.wakusei.ne.jp/www.htm
tonka729
質問者

補足

以下はほとんどの部分をgooの教えて!で教えていただいたものです。ちゃんと動きました。その後、クッキー書き込み、読み込みをするために私が書き加えてからエラーが発生しました。すでに書き込みのところからエラーになっているようです。 <script type="text/javascript"><!-- function putOpt(){ n=document.form1.URLs.length; document.form1.URLs.options[n]= new Option(); document.form1.URLs.options[n].text=document.form1.url_in.value; data_for_cookie=document.form1.URLs.options.value; alert(data_for_cookie); data_for_cookie=escape(data_for_cookie); Set-Cookie: NAME=data_for_cookie; Fri, 31-Dec-2030 23:59:59; document.form1.url_in.value="http://"; document.form1.url_in.focus(); } // --></script> <script type="text/javascript"><!-- function f1move(){ parent.frame1.location.href=document.form1.URLs[document.form1.URLs.selectedIndex].text; } // --></script> <script type="text/javascript"><!-- function getCookie(){ storedURLs =document.cookie; storedURLs = unescape(storedURLs); document.form1.URLs.options.value=storedURLs; } // --></script>

関連するQ&A

  • 書いたクッキーを読み出してメニューに入れるイベントの書き方

    フォーム部品type=text の一行テキスト領域で入力した単語を、inputwordkensaku.cgiには辞書検索させ検索結果をCookieに書かせるところまでやらせ、そのCookie データをJavaScript で読み、あらかじめ設置しておいたフォーム部品であるメニューにセットしようとしているのですが、うまくいきません。  cgiはエラーが出ずに動きますが、Cookie への書き込みができたか確認しようにも <INPUT size="20" name="inputbox" type="text" onChange = "inputwordkensaku.cgi">のイベントにづけて、このCookie を読み出すための次のようなJavaScriptのプログラムをどこに書きつなげたらよいのかが分かりません。よろしくお願いいたします。 <script type="text/javascript"><!-- function set__resultsData(){ //クッキーに格納されたデータを読み出して、 //オプションメニューと隠しフィールドにセットする getc=document.cookie+";";  //クッキーを読む x1=getc.indexOf("resultdata"); if (x1!=-1) { tem1=getc.substring(x1-1); x2=tem1.indexOf("="); x3=tem1.indexOf(";"); urls_data0=tem1.substring(x2+1,x3); urls_data=unescape(urls_data0); CkOpt=urls_data.split("<>"); //クッキーデータの分析 for (i=1; i<CkOpt.length; i++){ longlinestr = CkOpt[i-1];//これは見出し語の原型 pp = longlinestr.indexOf(" /// "); midashigo = longlinestr.substr(0, pp-1); yakugo = longlinestr.substring(pp+5); document.form1.hiddenlist.options[i] = new Option(); document.form1.hiddenlist.options[i].text = yakugo; //↑隠しリストに辞書の訳語部分のみをセットする document.form1.wordlist.options[i]= new Option(); document.form1.wordlist.options[i].text=midashigo; //見出し語のみをセットする }}} // --></script>

  • セレクトメニューの4連動

    いつも参考にさせて頂いております。 javascript初心者です。 現在、javascriptにてセレクトメニューの4連動を作成しているのですが、4つ目のセレクトメニューを正常に動かすことが出来ません・・・。何とか3つまでは動くようになったのですが・・・。忙しいところを申し訳ありませんが、教えて下さい。 一つ目のセレクトで、地域の選択 二つ目のセレクトで、県の選択 三つ目のセレクトで、「プレイスポット」か「食事」の選択 四つ目のセレクトでは、 プレイスポット名(三つ目でプレイスポット選択時) お店名(三つ目で食事選択時) 上記したようにしたいのです。宜しくお願いします。 <html> <head> <script type="text/javascript"> <!-- var area=0; function setA(n) { aa=n; data1 = [ ["東京","神奈川"], ["大阪","神戸"], ]; len = document.form1.box_a.options.length; for(i=len-1; i>0; --i) document.form1.box_a.options[i] = null; if(n!=0) { document.form1.box_a.style.visibility = "visible"; for(i=0; i<data1[n-1].length; i++) document.form1.box_a.options[i+1] = new Option(data1[n-1][i]); } setB(0); } function setB(n) { data2 = [ [["プレイスポット","食事"],["プレイスポット","食事"]], [["プレイスポット","食事"],["プレイスポット","食事"]] ]; len = document.form1.box_b.options.length; for(i=len-1; i>0; --i) document.form1.box_b.options[i] = null; if(n==0)return; document.form1.box_b.style.visibility = "visible"; for(i=0; i<data2[aa-1][n-1].length; i++) document.form1.box_b.options[i+1] = new Option(data2[aa-1][n-1][i]); setC(0); } function setC(n) { data3 = [ [[["としまえん","よみうりランド"],["キハチ","久兵衛"]]], [[["江ノ島","鎌倉"],["カレーミュージアム","中華街"]]], [[["ユニバーサルスタジオ","天王寺動物園"],["かに道楽","金龍ラーメン"]]], [[["須磨海浜水族園","グリコピア"],["コンチェルト","六甲山牧場"]]] ]; len = document.form1.box_c.options.length; for(i=len-1; i>0; --i) document.form1.box_c.options[i] = null; if(n==0)return; document.form1.box_c.style.visibility = "visible"; for(i=0; i<data3[aa-1][n-1][n-1].length; i++) document.form1.box_c.options[i+1] = new Option(data3[aa-1][n-1][n-1][i]); } //--> </script> </head> <body> <form name="form1"> <select name="sel1" onChange="setA(this.selectedIndex)"> <option value="0" selected>▼選択してください</option> <option value="1">関東</option> <option value="2">関西</option> </select> <select name="box_a" onChange="setB(this.selectedIndex)"><option value="0" selected>---------------</option></select> <select name="box_b" onChange="setC(this.selectedIndex)"><option value="0" selected>---------------</option></select> <select name="box_c" onChange=""><option value="0" selected>---------------</option></select> </form> </body> </html>

  • Javascriptでセレクトメニューの選択チェックの方法

    Javascriptでセレクトメニューのフォームをチェックしたいのですが、 リストメニューの「選択して下さい」を選んだままだと、「番号を選択して下さい。」とエラーを出したいのですが、下記の様に書いてみたのですが、うまく動きません…どのように書けばいいか教えて下さい。宜しくお願いします。 <script language=\"JavaScript\"> <!-- function Check() { var str = document.form.a.value; if(document.form.a.value == "0") { alert("番号を選択して下さい"); } //--> </script> <form id="form" name="form" method="post" action="##"> <select name="a" onblur="Check();"> <option value="0">選択して下さい</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <input type="submit" name="Submit" value="登録" onClick="Check();"> </form>

  • セレクトメニューで

    セレクトメニューで フレームを使った、複数のセレクトメニューで 今の状態だと、上のセレクトメニューは問題ないのですが 下のセレクトメニューで選択すると、上のセレクトメニューの「更新」になるだけに なってしまいます。 要所の所だけ、記載しますので間違ってるところを教えてください。 <script type="text/javascript"> <!-- // 設定開始 var target = "right"; // 設定終了 function jump(){ var url = document.form1.select1.options[document.form1.select1.selectedIndex].value; if(url != "" ){ if(target == 'top'){ top.location.href = url; } else if(target == 'blank'){ window.open(url, 'window_name'); } else if(target != ""){ eval('parent.' + target + '.location.href = url'); } else{ location.href = url; } } } // --> </script> </head> <body> <TABLE border="0"> <TBODY> <TR> <TD><form action="#" name="form1"> <select name="select1" onChange="jump()"> <OPTION>  メニュー</OPTION> </select> </form></TD> </TR> <TR> <TD><form action="#" name="form2"> <select name="select2" onChange="jump()"> <OPTION>  メニュー</OPTION> </select> </form></TD>

  • セレクトメニュー選択でもう一つセレクトメニューを出す

    「ブロック名」のセレクトメニューを選択すると、選択した項目によってもう一つ「部署名」のセレクトメニューが出て選択するようにしたいと思い、途中まで作成しました。 しかし、「ブロック名」を「Aブロック」選択しても「部署名」が「Bトップ~」が出てしまいます。 何がおかしいのか分からないので、ぜひ教えてください。 よろしくお願いいたします。 menuItem = [  ["Aトップ","A本部","B本部","C本部"], ["Bトップ","1本部","2本部","3本部"], ["Cトップ","あ本部","い本部","う本部"],         ["Dトップ","●本部","▲本部","◆本部"] ]; function setMenuItem(n) { len = document.form2.BUSYO.options.length; for (i=0; i<len; i++) { document.form2.BUSYO.options[i] = null; } document.form2.BUSYO.style.visibility = "visible"; for (i=0; i<menuItem[n].length; i++) { document.form2.BUSYO.options[i] = new Option(menuItem[n][i],menuItem[n][i]); } ---------------------------------------------------------------- <SELECT size="1" name="Block" onChange="setMenuItem(this.selectedIndex)"> <OPTION selected value="0">選択してください</OPTION> <OPTION value="a-block">Aブロック</OPTION> <OPTION value="b-block">Bブロック</OPTION> <OPTION value="c-block">Cブロック</OPTION> <OPTION value="d-block">Dブロック</OPTION> </SELECT> <SELECT size="1" name="BUSYO" style="visibility:hidden"> <OPTION selected value="0">選択してください</OPTION> </SELECT>

  • セレクトメニューからもう一つのセレクトメニューを選択したか確認

    「ブロック名」のセレクトメニューを選択すると、選択した項目によってもう一つ「部署名」のセレクトメニューが出て選択するようにしました。 送信前に「ブロック名」だけでなく、「部署名」も選択したかそうか確認したのですが、どうしでも出来ません。 いろいろ試しても出来なくて困っています。 ぜひ教えてください。 よろしくお願いいたします。 ---------------------------------------------------------------- menuItem =[[" "], ["(2) 部署を選択 ","あああ","いいい"],      ["(2) 部署を選択 ","ううう","えええ"], ["(2) 部署を選択 ","おおお","かかか"],      ["(2) 部署を選択 ","ききき","くくく"]]; function setMenuItem(n) { len = document.form2.BUSYO.options.length; for (i=0; i<len; i++) { document.form2.BUSYO.options[i] = null; } document.form2.BUSYO.style.visibility = "visible"; for (i=0; i<menuItem[n].length; i++) { document.form2.BUSYO.options[i] = new Option(menuItem[n][i],menuItem[n][i]); } ---------------------------------------------------- <SELECT size="1" name="AREA" onchange="setMenuItem(this.selectedIndex)" style="color : #3d3d3d;"> <OPTION value="0" selected>(1) ブロックを選択 </OPTION> <OPTION value="Aブロック">Aブロック</OPTION> <OPTION value="Bブロック">Bブロック</OPTION> <OPTION value="Cブロック">Cブロック</OPTION> <OPTION value="Dブロック">Dブロック</OPTION> </SELECT> <SELECT size="1" name="BUSYO" style="color : #3d3d3d;visibility : hidden;"> <OPTION selected value="0"></OPTION> </SELECT> ---------------------------------------------------------------- 確認用 if(document.form2.AREA.value=="0"){ alert("ブロックを選択してください"); return false; } return true; }

  • ふたつのセレクトメニューの項目を外部ファイルから読み込ませて連動させたい。

    上のセレクトメニューから県名を選ぶと、下のセレクトメニューの項目が市区町村の項目になるようにセレクトメニューを連動させたいです。 また、そのときのセレクトメニューの項目を外部ファイルから読み込ませたいのですがエラーが出てしまいます。。。 htmlには、 <html> <head> <title>あ</title> <script type="text/javascript"> <!-- // --> </script> <script type="text/javascript"> <!-- window.onload=function (){ for(var i=0; i<data.length; i++){ document.FORM1.MENUA.options[i] = new Option(data[i][0],data[i][0]); } setSubMenu(0); }; function setSubMenu(no){ document.FORM1.MENUB.length=0; for(var i=1; i<data[no].length; i++){ document.FORM1.MENUB.options[i-1] = new Option(data[no][i].key,data[no][i].value); } } // --> </script> </head> <body> <form name="FORM1"> <select name="MENUA" onchange="setSubMenu(this.selectedIndex)"> </select> <br> <select name="MENUB" > </select> </form> </body> </html> 外部ファイルに data = [ // [メイン分類,サブ分類並び,…], ["北海道", {key:"函館市",value:02_11}, {key:"小樽市",value:02_12}, {key:"旭川市",value:02_13}, {key:"その他市町村",value:02_099}], ["青森", {key:"青森市",value:03_01}, {key:"弘前市",value:03_02}, {key:"八戸市",value:03_03}, {key:"鳥取",value:213}], {key:"その他市町村",value:03_099}], ["岩手県", {key:"盛岡市 ",value:04_01}, {key:"宮古市",value:04_02}, {key:"大船渡市",value:04_03}, {key:"その他市町村",value:04_099}], ["宮城県", {key:"石巻市",value:05_06}, {key:"塩竈市",value:05_07}, {key:"古川市",value:05_08}, {key:"その他市町村",value:05_099}], ]; と書きましたがjavascript初心者でどこに間違いがあるのか解りません・・ すみませんがご教授のほどよろしくお願いいたします。

  • [JavaScript+<select>]最初から5文字一致でセレクト状態にしたい。

    こんばんは。 HTMLとJavaScriptで簡単な動的ページを作成しています。 そこで、行き詰っていることがありますのでご相談を・・・。 こういう<SELECT>があるとします・・・。 <FORM name="myform"> <SELECT name="menu"> <OPTION value="item1001">メニュー1</OPTION> <OPTION value="item2001">メニュー2</OPTION> </SELECT> </FORM> 初期値を「メニュー2」にしたい場合・・・これをJavaScriptで指定する場合、ONLOADのタイミングで・・・ document.myform.menu.value = "item2001"; とすればいけます。 今回は・・・"item2"だけの情報でヒットさせたいと思っています。 つまり、optionのvalue値の頭から5桁だけのマッチングでセレクト状態にさせたいのです。 ループという形をとらずにセレクトさせる方法を探しています。 テクニックをご教授下さい・・・。 宜しくお願い致します。

  • 複数のセレクトメニューを制御するとき・・・

    どなたかお手すきでしたら、稚拙な質問にお付き合いお願い致します。 ネットで探した方法で、セレクトメニュー1の項目を選択したときにセレクトメニュー2の項目を変化させる制御をしています。 このフォームでDBにvalue値(1,2など数値で)を送信するようにしたいのですが この方法ですとセレクトメニュー2のvalue値が0(NULL)となってしまい上手く送信できません。 配列に文字列を入れていますし、DBの型をintにしているので0になってしまっていると思うのですが、 文字列としては送信したくはありません。 どのような方法でしたら文字列ではなく、上手くvalueに数値を入れることが出来るでしょうか。 どうかよろしくおねがいします。 以下使用しているコードです。 <html> <head> <title>テストテスト</title> <script language="JavaScript"><!-- menuItem = [ [], ["あああ","あああ2","あああ3","あああ4","あああ5"], ["いいい"], ["ううう","ううう2"], ["えええ","えええ2","えええ3","えええ4"] ]; function clearOption(len){ var i; for (i=0; i<len; i++){ document.aaa.bbb.options[i] = null; } } function setMenuItem(n){ optlen = document.aaa.bbb.options.length; while(optlen > 0){ clearOption(optlen); optlen = document.aaa.bbb.options.length; } if (menuItem[n].length > 0){ for (i=0; i<menuItem[n].length; i++){ document.aaa.bbb.options[i] = new Option(menuItem[n][i],menuItem[n][i]); } } } // --></script> </head> <body> <form name="aaa"> <select name="Maker" onChange="setMenuItem(this.selectedIndex)"> <option value="" selected>--- 選択してください ---</option> <option value="1">ひとつ</option> <option value="2">ふたつ</option> <option value="3">みっつ</option> <option value="4">よっつ</option> </select> <select name="bbb"> <option value="" selected>--- 選択してください ---</option> </select> </form> </body> </html>

  • セレクトメニュー連動のテキストをクリアにしたい

    下記のサンプルがあります。 <html> <head> <title>form TEST</title> <script> <!-- menuItem = [["-選んで下さい-","いち","に","さん"], ["-選んで下さい-","ひい","ふう","み"], ["-選んで下さい-","もの","じ","とり"]]; function check(){ len = document.form.three.options.length; for (i=0; i<len; i++){ document.form.three.options[i] = null; } n = document.form.one.value; if(n == "1"){document.form.three.style.visibility = "visible"; for (i=0; i<menuItem[0].length; i++){ document.form.three.options[i] = new Option(menuItem[0][i],menuItem[0][i]); } }else if(n == "2"){document.form.three.style.visibility = "visible"; for (i=0; i<menuItem[1].length; i++){ document.form.three.options[i] = new Option(menuItem[1][i],menuItem[1][i]); } }else if(n == "3"){document.form.three.style.visibility = "visible"; for (i=0; i<menuItem[2].length; i++){ document.form.three.options[i] = new Option(menuItem[2][i],menuItem[2][i]); } } } msgtxt = new Array(); for (i=0; i<3; i++){msgtxt[i] = new Array(); } msgtxt[0][0] =" "; msgtxt[0][1] ="あいうえお"; msgtxt[0][2] ="かきくけこ"; msgtxt[0][3] ="さしすせそ"; msgtxt[1][0] =" "; msgtxt[1][1] ="たちつてと"; msgtxt[1][2] ="なにぬねの"; msgtxt[1][3] ="はひふへほ"; msgtxt[2][0] =" "; msgtxt[2][1] ="まみむめも"; msgtxt[2][2] ="やゆよ"; msgtxt[2][3] ="わゐうゑを"; function txtchg(){ x = document.form.two.selectedIndex; y = document.form.three.selectedIndex; document.form.four.value = msgtxt[x][y]; } // --> </script> </head> <body onLoad="check()"> <form name= "form"> Value1 <select name="one" onchange="check()"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> Value2 <select name="two" onchange="check()"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> Value3 <select name="three" style="visibility:hidden" onchange="txtchg()"> </select> Value4 <textarea name="four" rows="1" cols="10"></textarea> </form> </body> </html> これは、Value1の選択値によってValue3の選択肢を変えて、Value2とValue3の選択値の組み合わせの結果をValue4に記入するという動作のサンプルです。 でもこれですと、Value2とValue3の結果でValue4に記入された後に、Value1やValue2を変更した場合、Value3は初期値に戻るのですが、Value4はそのまま表示されたままになってしまいます。本当はValue3が初期値に戻ったのだから、その場合はValue4をクリアにしたいのですが。 どこをどう修正すればその動作が可能になるのか、ご教示お願い致します。

専門家に質問してみよう