フォームのエレメント名の一部だけに引数を使う方法

このQ&Aのポイント
  • フォームのエレメント名の一部だけに引数を使う方法について教えてください。要約:フォームのチェックボックスに引数を入れて、チェックをオンにするスクリプトを書く方法を教えてください。
  • フォームのエレメント名の一部だけに引数を使って、チェックボックスをオンにする方法を教えてください。
  • フォームのチェックボックスに引数を使って、チェックをオンにする方法を教えてください。
回答を見る
  • ベストアンサー

フォームのエレメント名の一部だけに、引数を使うには?

<FORM name="myform"> <INPUT type="checkbox" name="el_word123" onClick="Switch('word123');"> </FORM> というチェックボックスに対して、以下のxxxに引数を入れて、 チェックをオンにするスクリプトを書くにはどうすれば良いでしょうか? function Switch(xxx){ // xxx = word123 window.document.myform.el_xxx.checked = true } 試しに以前こちらで教わったevalというのを使ってみて、 window.document.myform.eval('el_' + wid).checked = true としたところ、FireFoxではうまく行ってしまいました(!) が、IEではエラーが出て、チェックが入りませんでした。 ゆえあって、name="el_word123" の部分は、このようにel_xxxという形で保ち、 引数'word123'自体もこの形で保ちたいのです。 恐れ入りますが、どなたかアドバイスいただけないでしょうか...。よろしくお願いいたします。m(_ _)m

  • r_bel
  • お礼率95% (81/85)

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

evalは使う必要はないでしょう。 厳密には document.forms["myform"].elements["el_"+xxx].checked = true とすると明示的でわかりやすいでしょうけどめんどうなら document.myform["el_"+xxx].checked = true でもいいはずです あと、Switchのような予約語系のユーザー関数ははまるので あまりお勧めできません。(まぁ今回のケースは問題なさそうですが) <script language=javascript> function Switch(xxx){ document.myform["el_"+xxx].checked = true } </script> <FORM name="myform"> <INPUT type="checkbox" name="el_word123" onClick="Switch('word123');"> </FORM>

r_bel
質問者

お礼

document.forms["myform"].elements["el_"+xxx].checked = true を使わせていただき、おかげさまでバッチリできました!! とてもわかりやすいご回答をありがとうございました。m(_ _)m さらに予約語くさい(笑)Switchの件でもアドバイスまでいただいて、感激です。 いただいたご回答を元に、フォームのエレメントへのアクセスの仕方を、 もう一度きちんと勉強し直そうと思います。 本当にありがとうございました!

関連するQ&A

  • チェックボックスの連動でJavaScriptの記述を短くしたい。

    【あ】、【い】という項目があり、それぞれの項目内にA、Bというチェック項目があります。 【あ】項目のAにチェックを入れると【い】のAにもチェックが入るように作りました。 以下のソースでもなんとか動くのですが、【あ】、【い】という項目が増える事とA、Bというチェック項目が増えることが判り、JavaScriptのソースを少しでも短くしたいのですが、なにか好い方法がございましたらお教え頂ければ幸です。 /************参考ソースです*****************/ <html> <head> <title>無題ドキュメント</title> <script> function check_a(){ if(document.form.a.checked==true) { document.form.a.checked=true; document.form.b.checked=false; document.form.aa.checked=true; document.form.bb.checked=false; } } function check_b(){ if(document.form.b.checked==true) { document.form.a.checked=false; document.form.b.checked=true; document.form.aa.checked=false; document.form.bb.checked=true; } } function check_aa(){ if(document.form.aa.checked==true) { document.form.a.checked=true; document.form.b.checked=false; document.form.aa.checked=true; document.form.bb.checked=false; } } function check_bb(){ if(document.form.bb.checked==true) { document.form.a.checked=false; document.form.b.checked=true; document.form.aa.checked=false; document.form.bb.checked=true; } } </script> </head> <body> <form name="form"> 項目【あ】 <input type="checkbox" name="a" onclick="check_a()"> A<BR> <input type="checkbox" name="b" onclick="check_b()"> B<BR> <br /> 項目【い】 <input type="checkbox" name="aa" onclick="check_aa()"> A<BR> <input type="checkbox" name="bb" onclick="check_bb()"> B<BR> <br /> </form> </body> </html> /*************************/ 何卒、宜しくお願い申上げます。m(_ _)m

  • javaスクリプトによりフォーム入力

    javaスクリプトによりフォーム入力を製作中です。 ラジオボタン、チェックボックス、プルダウン選択を選択すると、同ページのテキストエリアにそれらを選択した時点で反映されるというものです。 html構造として table/ 項目1 項目2 項目3 項目4 ・ ・ ・ ------ テキストエリア ------ /trable となっていきます。 var copytoclip=1 function CopyAll(mytext) { var tempval=eval("document."+mytext) tempval.focus() tempval.select() if (document.all&&copytoclip==1){ therange=tempval.createTextRange() therange.execCommand("Copy") setTimeout("window.status=''",1800) } } function setChars(form) { if(form.n1[0].checked) { str1 = document.myform.n1[0].value } else if(form.n1[1].checked) { str1 = document.myform.n1[1].value } else if(form.n1[2].checked) { str1 = document.myform.n1[2].value } else { str1 = "テキストテキスト" } /*下がテキストエリアへ反映される*/ document.myform.mytext.value = "hogehoge" + str1 +・・・・ + "\n\n" } といったものです。 【苦戦しているところ】 選択項目がひとつしかない場合に、チェック項目を作成しても テキストエリアへ反映されません。 -・--・--・--・--・- また、これとは別によりいいサンプル等ありましたら、教えていただけるとありがたいです。

  • サブルーチンへの引数

    フォーム内のチェックボックスすべてを一括でチェックする関数を作成しています。 JavaScript関数を呼び出す際の引数の受け渡し方について質問です。 以下のようなソースで、関数を呼び出した場合、 alert(frmName)の時には"xxxxx"と表示されますが、 document.frmName.elements[i].checked = true; の時には、変数展開されずに、"frmName"として処理されているようです。 変数ではなく、フォームのname属性値を直接記述すると動作します。 エラーメッセージは 「コード:0 エラー:'document.frmName.elements' は Null またはオブジェクトではありません。」 となっています。 何か解決方法はありますでしょうか? ----JavaScript部分 //全てのチェックボックのチェックをON function chBxOn(frmName){ alert(frmName); for (var i=0; i<document.frmName.elements.length; i++){ document.frmName.elements[i].checked = true; } ---- 関数呼出部分 <form name="xxxxx"> <a href="javascript:chBxOn('xxxxx')">ON</a> <input type="checkbox"> <input type="checkbox"> <input type="checkbox"> </form>

  • チェックボックスのチェックについて

    チェックボックスが2つあります。 一つが選択されたらテキストボックスが入力可能にしてあります。 Aを選択すると、Bのチェックが外れる、反対の場合も同じようにしたいのですが、下記のように書きましたがうまくいきません。 解決方法が分かられる方、教えて下さい。 *********************************************** function Change(){ if(document.myForm.chkB.checked ==true{ document.myForm.TxtA.disabled = true; document.myForm.chkA.checked = false; } else { document.myForm.TxtA.disabled = false; document.myForm.chkA.checked = true; } } ***********************************************

  • 任意のフォーム名・部品名に対応したいのですが・・・

    始めまして。 カラーパレットのphpを作り、親ウィンドウのテキストボックスにカラー値を 引き渡す部分に以下のようなjavascriptを作りました。 function set_color(color) { window.opener.document.form1.name_color.value = color; } (フォーム名:form1 テキストボックス名:name_color) 一応これでも動作するのですが、これではテキストボックスごとに別々のphpプログラムを用意しなければなりません。 そこで、引数を使い function set_color(form_name, txt_name, color) という形でフォーム名とテキストボックス名を任意に指定したいのですが window.opener.document.form1.name_color.value = color; の部分をどう書きかえればいいのかわかりません。 どうか、よろしくお願いします。

  • チェックボックスの未入力チェック

    ざっとですけれども <form action="**" name="myform" onsubmit="return Check()" method=post> <input type="checkbox" name="Erasedata" id="Erasedata" value="1" > <input type="checkbox" name="Erasedata" id="Erasedata" value="2" > ・・・ <input type="checkbox" name="Erasedata" id="Erasedata" value="5" > <input type="submit" value="選択されたものを削除する"> このようなチェックボックスがあったとして function Check() { for (i=0;i<document.myform.length;i++)  {   if(document.myform.Erasedata[i].checked==true) {return true;}  } alert("どこかにチェックを入れて下さい "); return false; } といった感じで未入力チェックをしています。 チェックボックスが複数の場合はうまく動くのですが、チェックボックスがひとつだとうまくいきません。スクリプトで何か問題があるようでしたらご指摘お願いできませんでしょうか。よろしくお願いいたします。

  • htmlフォームでチェックボックスの入力漏れを警告

    チェック必須にしたいのですが、出来ません。 以下のようにnameの所に name="kurasu[1]" と入れています。 他の処理もあるので、そのような入れ方をしています。 <input type="checkbox" name="kurasu[1]" id="kurasu1" value="1" /> <input type="checkbox" name="kurasu[5]" id="kurasu5" value="5" /> <input type="checkbox" name="kurasu[8]" id="kurasu8" value="8" /> としてあるので、以下のように if(!document.form.kurasu[1].checked && !document.form.kurasu[5].checked && !document.form.kurasu[8].checked){ として、アラートを出したいのですが、出来ません。 やはり kurasu[1] では出来ないでしょうか? 他のものは以下で処理しています。 <script type="text/javascript"> function check(){ var flag = 0; var errorMes = new Array(); var chkCount = 0; if(!document.form.tel.checked){ // 「電話番号」の記入をチェック flag = 1; errorMes.push("「電話番号」をご記入ください。\n"); } if(flag){ var n = errorMes.length; var errorStr =""; for(i=0;i<n;i++){ errorStr+= errorMes[i]; } window.alert(errorStr); // 記入漏れがあれば警告ダイアログを表示 return false; // 送信を中止 }else{ return true; // 送信を実行 } } </script>

  • 引数を利用したい

    いつもお世話になっています。 さて、早速ですが 送られてきた、引数を値として使えないのでしょうか? <td><input type="checkbox" name="C1" value="1" onChange="func(C1)"></td> <td><input type="text" name="create_date"></td> <td><input type="text" name="transaction"></td> 上記HTML中のチェックボックスのname属性値を引数にfunc関数に渡しています。 function func(str) { document.form1.str.click(); } func関数内で渡された引数を、str変数に入れてそれを値として使いたいのですが、うまくいきません。 document.form1.str.click(); を document.form1.C1.click(); とするとうまく動きます。 よろしくお願いします。

  • Javaでフォームのオブジェクトをどのように記述するか

    こんにちは。いつもお世話になっています。 現在ポップアップウィンドウを用いたWEBページを作成し、その機能をカスタムタグによって再現するという作業をしています。 mainWinからsubWinを開き、sabWinからmainWinに表示された画像をjavascriptで変化させるというものです。 まず ラジオボックスがチェックされているかなどを調べる for(i=0; i<document.forms[name].elements[form_ele].length; i++) { if(document.forms[form_name].elements[form_ele][i].checked) break; } (form_nameはフォーム名form_eleは要素名でこの関数呼び出し時に引数で渡しています) などの処理があり、その後画像変更を行います。 基本はimageに image = document.forms[form_name].elements[form_ele][i].value; でフォームで選択した画像名を渡し window.opener.document.getElementById('ID').src=image; (IdのIDは変更場所を示しています) によって画像を変更しています。 現在window.opener~のところを <castom tag:カスタムタグ名 mode="getElementById('ID').src" value="image"/> といったように書き換えるタグは単純ですので可能でしたが form_nameやform_eleもカスタムタグのところで要素として(?)渡し、 (<casom tag:カスタムタグ名 mode="getElementById('ID').src" value="image" name="form_name" elements="form_ele"/>といったふうに) チェック済み判定部分などすべてカスタムタグで表記できないかと考えています。 しかしforms[form_name]やwindow.opener等のオブジェクト名(?)はどのようにすればjavaが理解し、処理してくれるのでしょうか? (getParameterなどでキャッチすればいいのでしょうか?ただ名前だけキャッチしても処理させるにはどうするのかわかりません・・・) またこのようなことは不可能でしょうか? よろしくお願いします。

  • 一つ少ないmyFORM.length

    下記のような form 内のチェックを全てはずす関数があります。 なぜうまく機能するのでしょうか? document.myFORM.lengthの部分はエレメンツの数より1少ない数を返すとリファレンスに書いてありました。 わたしの考えでは、5個あるラジオボタンの5個目にチェックが入っていたら、チェックは消えない気がするのですが…… function mouitido(){ for (i=0; i<document.myFORM.length; i++) { if (document.myFORM.elements[i].checked) { document.myFORM.elements[i].checked = false; } } }