文字の分割について

このQ&Aのポイント
  • フレーム間でのデータのやり取りについて質問があります。
  • 左側のフレームでラジオ式のチェックボックスにチェックを入れると、そのvalueで指定している値が分割されて、右フレームのTextBoxに値が渡されます。
  • 具体的には、valueの値が「国/県/都市」となっている場合、右のフレームには国、県、都市のTextboxに分割された値が入るようにしたいです。
回答を見る
  • ベストアンサー

文字の分割について

分からないことが一つ出てきました。 それは、フレーム間でのデータのやり取りで、 画面が2つからのフレームからなっており、左側のフレームでラジオ式のチェックボックスにチェックを入れるとそのvalueで指定している値が分割されて、右フレームのそれぞれのTextBoxに値が渡される。 例えば、valueで"国/県/都市"と値がある場合、右のフレームに引き渡されたときには、国、県、都市のTextboxに分割されて値が入るようにしたいのです。 そこで、以下のように左側のフレーム内(値を渡すほう)組んでは見たのですが・・・ function mname(){ var val; with(document.form1){ for(var i=0;i<list.length;i++){ if(list[i].checked){ val = list[i].value; } namae = new Array(val); namae[i] = "<cfoutput>#getnamae.kuni#/#getnamae.ken#/#getnamae.tosi#</cfoutput>"; data = namae[i].split("/"); parent.right.document.myform.kuni.value = data[0]; parent.right.document.myform.ken.value = data[2]; parent.right.document.myform.tosi.value = data[3]; } } } ちなみに、ColdFusionを使っているので、namae[i]のところは、こうなっています。まずは、基本的なロジックが間違っていると思いますがよろしくお願いします。

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

  • ベストアンサー
noname#1785
noname#1785
回答No.1

これだとSQLで取得した一件目のデータがでてくるんじゃないですか? ・・・って、その後が間違ってるからでないか。(^^;; valの中に、チェックされた値が入りますよね。 なので、その値を使用するように変更するのが1点。 後は、配列nameeとdataがごっちゃになってるのを修正するのが1点。 それと、なぜだか配列が[0][2][3]になっているので、ここを[0][1][2]にするのが1点。 それと中カッコのくくり方が正しくないのが1点です。 function mname(){ var val=""; ←ここは初期化した方がいいかも with(document.form1){ for(var i=0;i<list.length;i++){ if(list[i].checked==true){ ←この聞き方の場合は、判定条件が必要なはずです val = list[i].value; } } } data = new Array(); data = val.split("/"); parent.right.document.myform.kuni.value = data[0]; parent.right.document.myform.ken.value = data[1]; parent.right.document.myform.tosi.value = data[2]; } こんな感じでしょうか。 中カッコのくくり方、気を付けてください。 特にループは気を付けないと無限ループ回りますよ。 どこからどこまでの処理を、各処理の中で使用しなければいけないかを判定できれば、この問題も解決できるはずです。 ちなみに、環境がわからないし、他のフレームとの関連も見えないので、動作確認はしていません。(というよりできません) # それに今までの回答見たく、無視されちゃうかもしれないし。

obahiro
質問者

お礼

早速のご回答ありがとうございます。 おかげで、希望どおりになりました。いまだ"[ ]”の使い方にはなれていないのと、初期化のことに気が回りませんでした。 どうも、ありがとうございます。 それと、言い訳っぽく聞こえるかもしれませんが、お礼や、ポイントをつけようとすると何故かブラウザ上でエラーが出てしまいどうしようもない状態になってしまったりしておりました。 ですから、折角の回答を無視したつもりではなかったのですが、不愉快な気分になられていましたのなら申し訳ございませんでした。 厳しいご意見もいただき、自分もこのままじゃいけないと思いますます気合入っています。 これからもよろしくお願いいたします。

関連するQ&A

  • FORMデータを配列としてそうしんしたいのですが・・・

    JavaScriptでセレクトボックス内の値が変化したらもう一つあるセレクトリスト内の値が変更されるように組みました。 以下コード。 ----------------------- <HTML> <head> <script type="text/JavaScript"> <!-- menuItem = [["A","B","C","D","E"],       ["1","2","3"], ["あ","い","う","え","お","か"]]; function setMenuItem(n) { len = document.myForm.works.options.length; for (i=len-1; i>=0; i--) { document.myForm.works.options[i] = null; } for(i=0; i<menuItem[n].length; i++) { document.myForm.works.options[i] = new Option(menuItem[n][i],menuItem[n][i]); } } } //--> </script> </head> <body> <FORM name = "myForm"> <SELECT name="list" onChange="setMenuItem(this.selectedIndex)"> <option value="list1">リスト1 <option value="list2">リスト2 <option value="list3">リスト3 </SELECT> <SELECT name="works[]" MULTIPLE> <OPTION>A <OPTION>B <OPTION>C <OPTION>D <OPTION>E </SELECT> </FORM> </BODY> </HTML> ----------------------- でセレクトリスト内のデータを配列として送信したいのですがうまくいきません。 セレクトリストのnameはworks[]にしたら動作すらしなくなりました。 どなたかご教授願います。

  • Formの値を別のフレームで使いたい

    上下分割のフレームのうち、上のフレームの <FORM NAME="BForm"> RGB値を入れる> 1番目の色:<INPUT TYPE="text" NAME="Bpt1" VALUE="" SIZE="8"> 2番目の色:<INPUT TYPE="text" NAME="Bpt2" VALUE="" SIZE="8"> <INPUT TYPE="button" VALUE="CL" NAME="CL" onClick="CL()" tabindex="6"> </FORM> でテキストボックスに入れた数字を使って 下のフレーム(komado3)を書き変えたいのですが。 <SCRIPT LANGUAGE="JavaScript"> <!-- function CL(){ B1V=document.BForm.Bpt1.value; B2V=document.BForm.Bpt2.value; parent.komado3.document.open(); parent.komado3.document.write('<HTML><HEAD>'); parent.komado3.document.write('<STYLE TYPE="text/css">'); parent.komado3.document.write('<!--'); parent.komado3.document.write('.pt1{color:'+B1V+'}'); parent.komado3.document.write('.pt2{color:'+B2V+'}'); parent.komado3.document.write('-->'); parent.komado3.document.write('<'+'/STYLE><'+'/HEAD><BODY>'); parent.komado3.document.write('<SPAN CLASS='+pt1+'>1番目の色は'+B1V+'です<'+'/SPAN>'); parent.komado3.document.write('<SPAN CLASS='+pt2+'>2番目の色は'+B2V+'です<'+'/SPAN>'); parent.komado3.document.write('</'+'BODY><'+'/HTML>'); parent.komado3.document.close(); } //--> </SCRIPT> これだとうまく行かないのですが、どこがおかしいのか教えてください。

  • 右フレームのテキストに、値を入れ込む

    左20%・右80%と言うようにフレームを切ってあります。 左のフレームにボタンがありまして、それを押すとJavaScript が動き出し、右のフレームにあるテキストのValueに「AAA」と 入れ込みたいんです。 ブランクが空いてしまったため、やり方を忘れてしまったようです。 一応下記のやり方でよかったような気がしたんですが、でも出来な いので当然間違っています。 function Text(){ parent.main.window.document.Myform.txt1.value = "AAA"; } お手数ですがよろしくお願いします。

  • メニューの選択項目に応じて、もう1つのメニューの内容を変更する方法

    メニューの選択項目に応じて、もう1つのメニューの内容を変更する方法 2つのコンボがります。 1個目は、メーカーを選択します。 2個目は、機種を選択します。 下記ソースでは、valueの値が取得でいないようです。 (例) makerでドコモを選択したらvalueに1をセット sendwayでドコモ機種(2)を選択したらvalueに2をセット このようなことを実現したいのですが... よろしくお願いします。 <script language="JavaScript"><!-- menuItem = [["ドコモ機種(1)","ドコモ機種(2)"]["ドコモ以外機種"]]; function setMenuItem(n) { len = document.myForm.sendway.options.length; for (i=len-1; i>=0; i--) { document.myForm.sendway.options[i] = null; } for (i=0; i<menuItem[n].length; i++) { document.myForm.sendway.options[i] = new Option(menuItem[n][i],menuItem[n][i]); } } // --></script> <select name="maker" onChange="setMenuItem(this.selectedIndex)"> <option value="1" <?= $val?>>ドコモ</option> <option value="2" <?= $val?>>ドコモ以外</option> </select> <select name="sendway" > <option value="1" <?= $val?>>ドコモ機種(1)</option> <option value="2" <?= $val?>>ドコモ機種(2)</option> <option value="3" <?= $val?>>ドコモ以外機種</option> </select>

  • 他のフレームにあるボタンを使用不可にするには?

    2つのフレームに分割した画面で、一方のフレームにあるボタンを押したら、他のフレームにあるボタンを使用できなくしたいのですが、うまくいきません。下記のスクリプトでは、エラーになってしまいます。どのようにしたら良いでしょうか、よろしくお願いいたします。 <フレームの設定> <html> <head><title>フレームを縦に分割する</title></head> <frameset cols="50%,50%"> <frame src="left.html" name="light_frame" frameborder=1 border=1> <frame src="right.html" name="left_frame" frameborder=1 border=1> </frameset> </html> <left.htmlの内容> <html> <head> </head> <body> <form name="myform"> <input type="button" name="bt_del" value="削除"> </form> </body> </html> <right.htmlの内容> <SCRIPT Language="JavaScript"> function func1(){ //NG parent.left_frame.document.form.myform.bt_del.disabled = true; //これもNGでした //parent.left_frame.document.forms['myform'].bt_del.disabled = true; } </SCRIPT> <html> <head> </head> <body> <p><input type="button" value="変更" onclick="func1()" > </body> </html> 以上です。

  • 変数を文字型から数値型への強制変換方法?

    case文の書き方に不満が有るのでお尋ねします。 フォームの値は必ず文字型になっているので、case文では値を""で括る必要があります。 下記にサンプルを示します。 var index, val; index = document.getElementById("digitalinput").selectedIndex; val = document.form1.digitalinput.options[index].value; switch(val) { case "3": alert("選択された値は"+val+"です"); break; } valを数値型に変換して、case 3:と書けるようにする方法は有るのでしょうか。 よろしくお願いします。

  • VBScriptで別フレームのセレクトボックスの値を参照する方法

    VBScriptで、上のフレームのセレクトボックスで選択した値を、下のフレームで参照するにはどうしたらよいのでしょうか? JavaScriptなら、  parent.[上のフレーム名].document.  [フォーム名].[セレクトボックス名].value だと思うんですが、VBScriptでの方法がわかりません。 よろしくお願いします。

  • submit後のフォームデータの書き換えで注意する点はありますか?

    以下のようなJavascriptでサブミットを行った後に、フォームデータを戻すことは、普通やっても構わないのでしょうか? // フォームデータのバックアップを取る var backup = document.test_form.NAMAE.value; document.test_form.action = "test.cgi"; // フォームデータの書き換え document.test_form.NAMAE = "admin"; document.test_form.submit(); // フォームデータを戻す document.test_form.NAMAE.value = backup;

  • FORTRAN77のプログラミングです。

    FORTRAN77のプログラミングです。 プログラムがあと空白の部分がわからないんで教えてください。 九州・沖縄8件の名前kenと面積(km2)menと人口(人)jinが書かれたファイル'kyusyu.txt'がある。これを読み、面積、人口、人口密度(人/km2)mituの大きい順に県名と値を書き出すプログラムを完成させよ。(型宣言も必要) 主プログラムは、数、名前、値を与えるのみで、作業本体はサブルーチン副プログラムjunに任せる事とする。副プログラムは論理型変数を使う手法。 C main ken real men(8),jin(8),mitu(8) open (1,file='kyushu.txt') do 1 i=1,8 1 read (1,*) ken(i),men(i),jin(i) close (1) write (*,*)' 面積' call jun (8,ken,men) write (*,*)' 人口' call jun (8,ken,jin) write (*,*)' 人口密度' call jun (8,ken,mitu) end c sub subroutine jun (kazu,namae,atai) namae(47) atai(47) mark(47) do 1 i=1,kazu 1 mark(i)=.false. return end ここまではわかりました。空白の部分をお願いします。

  • javascriptで処理中の経過を書き込みたい

    javascriptをやっているのですがmyForm.text0のテキストスペースにforの経過の値をリアルタイムに書き込んで行きたいのです。 for(i=0;i<=100){  document.myForm.text0.value = i; } という具合にテキストファイルに随時書き込んで行きたいのですが処理が終わるまで値を書いてくれません。 for文の途中にalert();を挟むとボタンを押した後にはテキストに書き込まれています。 ですが一々アラートを押すのは面倒なのでどうにかしたいです。 知っている方がおられましたら教えてください。 よろしくお願いします。

専門家に質問してみよう