• ベストアンサー

プログラムを短くしたい

if ((document.myForm.first.selectedIndex==0) && (document.myForm.second.selectedIndex==6)) {n += 11}; else if ((document.myForm.first.selectedIndex==1) && (document.myForm.second.selectedIndex==0)) {n += 12}; else if ((document.myForm.first.selectedIndex==1) && (document.myForm.second.selectedIndex==2)) {n += 18}; 上記のようなコードで 「document.myForm.first.」など同じ文が続く場合、 この部分を短縮、もしくは省略して記述することは出来ないでしょうか?

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

  • ベストアンサー
  • taseki
  • ベストアンサー率66% (155/233)
回答No.2

jchさんと主旨はほとんど同じになってしまいますが、 良く見ると評価対象の値が2つだけなので、 var Value1 = document.myForm.first.selectedIndex; var Value2 = document.myForm.second.selectedIndex; if (Value1==0 && Value2==6) {n += 11}; else if (Value1==1 && Value2==0) {n += 12}; else if (Value1==1 && Value2==2) {n += 18}; としては?

tessyu
質問者

お礼

教えて頂いたコードをそのまま使わせて頂きました。 ありがとうございます。

その他の回答 (2)

  • Nickee
  • ベストアンサー率15% (14/93)
回答No.3

withが使えるのではないでしょうか? 検証してはいませんが、 with(document.myForm.first){ if ((selectedIndex==0) && (selectedIndex==6)) {n += 11}; else if ((selectedIndex==1) && (selectedIndex==0)) {n += 12}; else if ((selectedIndex==1) && (selectedIndex==2)) {n += 18}; } でできないでしょうか? 時間があったら、こちらでも検証してみます。

参考URL:
http://www.tohoho-web.com/js/statement.htm#stWith
tessyu
質問者

お礼

VisualBasicのようにWithも使えるんですねー。 勉強になりました!

  • jch
  • ベストアンサー率38% (7/18)
回答No.1

頭のほうで var doc = document.myForm; 下からは doc.first.・・・とかdoc.second.・・・ような感じで使えます。

tessyu
質問者

お礼

ありがとうございます! 悩みが解決致しました。

関連するQ&A

  • 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" } といったものです。 【苦戦しているところ】 選択項目がひとつしかない場合に、チェック項目を作成しても テキストエリアへ反映されません。 -・--・--・--・--・- また、これとは別によりいいサンプル等ありましたら、教えていただけるとありがたいです。

  • 代入の基礎?

    あけましておめでとうございます。 下記は「n」の値によって年月日の値を変更しようとしています。n=2の時は今日の日付を入れます。これはOK。それ以外の時は「最初に年月日のフォームに表示された値」を「mydate」に代入したものを表示したいのですが、下記だと直前に年月日に表示されたものになってしまうようです。基本的なこととは思いますが、助言いただけないでしょうか。 function set( n ) { mydate = document.myFORM.年月日.value if(n == 2) {document.myFORM.年月日.value = "今日の日付を入れる"}; else {document.myFORM.年月日.value = mydate} }

  • 必須項目の回答がない場合、次のページに進まない

    お世話になります。 プログラミング初心者のものです。 JavaScriptを用いて、必須項目(プルダウンメニュー)の回答が全てされていない場合に、次のページへ進まず、アラートが表示されるように設定したいと考えています。 そこで、以下のコードを書いたのですが、 設定する項目が13項目あり、8項目目から13項目目が未回答でも次のページに進めてしまいます。 これだけ量が多くなると、このプログラムだと実現出来ないのでしょうか? どこをどう直せば、改善されるのかを教えていただければ幸いです。 不躾な質問だとは重々承知しておりますが、時間がないため、何卒よろしくお願いいたします。 ●JavaScript <script type="text/javascript"> <!-- function check(){ var flag = 0; // 設定開始(チェックする項目を設定してください) if(document.aboutfande.fande1.options[document.aboutfande.fande1.selectedIndex].value == ""){ flag = 1; } else if(document.aboutfande.fande2.options[document.aboutfande.fande2.selectedIndex].value == ""){ flag = 1; } else if(document.aboutfande.fande3.options[document.aboutfande.fande3.selectedIndex].value == ""){ flag = 1; } else if(document.aboutfande.fande4.options[document.aboutfande.fande4.selectedIndex].value == ""){ flag = 1; } else if(document.aboutfande.fande5.options[document.aboutfande.fande5.selectedIndex].value == ""){ flag = 1; } else if(document.aboutfande.fande6.options[document.aboutfande.fande6.selectedIndex].value == ""){ flag = 1; } else if(document.aboutfande.fande7.options[document.aboutfande.fande7.selectedIndex].value == ""){ flag = 1; } else if(document.aboutfande.fande8.options[document.aboutfande.fande8.selectedIndex].value == ""){ flag = 1; } else if(document.aboutfande.fande.options[document.aboutfande.fande9.selectedIndex].value == ""){ flag = 1; } else if(document.aboutfande.fande10.options[document.aboutfande.fande10.selectedIndex].value == ""){ flag = 1; } else if(document.aboutfande.fande11.options[document.aboutfande.fande11.selectedIndex].value == ""){ flag = 1; } else if(document.aboutfande.fande12.options[document.aboutfande.fande12.selectedIndex].value == ""){ flag = 1; } else if(document.aboutfande.fande13.options[document.aboutfande.fande13.selectedIndex].value == ""){ flag = 1; } // 設定終了 if(flag){ window.alert('選択されていません'); // 選択されていない場合は警告ダイアログを表示 return false; // 送信を中止 } else { return true; // 送信を実行 } } // --> </script> ●HTML(長くなるため最初の2つだけ書いておきます) <h1><span class="daimei"><b>ウォーターベースファンデーション</b></span><span class="honbun">について</span></h1> <form action="tiku.php" method="post" name="aboutfande" onSubmit="return check()"> <p><span class="honbun"> Q1.この商品を買いたいと思いますか?</span>  <select name="fande1"> <option value="1">はい</option> <option value="2">いいえ</option> <option value="" selected>選択してください</option> </select> </p> <span class="honbun"> Q2.この商品にどのような印象を持ちましたか?<br>   もっとも当てはまるものを選択してください</span><br> <p><span class="honbun">   1.この商品を魅力的と感じた</span>  <select name="fande2"> <option value="1">全く当てはまらない</option> <option value="2">ほとんど当てはまらない</option> <option value="3">あまり当てはまらない</option> <option value="4">どちらともいえない</option> <option value="5">やや当てはまる</option> <option value="6">かなり当てはまる</option> <option value="7">非常に当てはまる</option> <option value="" selected>選択してください</option> </select></p>

  • javascriptに関しまして

    javascriptに関しまして if文の処理に関してお聞きしたいことがあります。 <script language="JavaScript"> <!-- myFlg = 0; function myFunc(){ if(myFlg == 0){ document.myFormMeS.value = "こんにちは"; } myflg = 1; else{ document.myFormMeS.value = ""; myFlg == 0; } } //--> </script> <form name="myform"> <input type="text" size="20" name="myFormMeS"> <script language="JavaScript"> <!-- setInterval("myFunc()",500); // --> </script> </form> というサンプルコードの中で、フラグの管理をする際に 初期値として、myFlg = 0をセットしているのでこんにちはと 表示してからmyFlg に1を代入していますが、その後一度if文を抜けて、 もう一度if(myFlg == 0)の判定を行っているのでしょうか? それとも、そのままelse処理に進むのでしょうか・・・? if文を抜けた後にどこの判定に進むのかいまいちよく分かりません。 初歩的な質問になりますが、宜しくお願い致します。

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

    チェックボックスが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; } } ***********************************************

  • リスト内のアイテムをプログラムで選択・ハイライトするには?

    とほほさんのJavaScript マニュアルサイトにつぎのような説明があります。 ■ フォーム部品(セレクト部品) ◆ window.document.form.select.selectedIndex (e3/N2) 現在選択されているオプションオブジェクトを示すインデックス番号(0~)を示します。これに値を代入することにより、セレクションボックスの選択項目を変更することができます。 わたしはそこで、 <?myFORM.listbox.selectedIndex=$j; ?> として、表示されているアイテムの中から、変数$j の番号に一致するアイテムを選択・ハイライトさせたいのです。どういうPHPスクリプトを書けばよろしいのでしょうか?

    • ベストアンサー
    • PHP
  • アラーと表示がうまくいきません

    <SCRIPT LANGUAGE="JavaScript"> <!-- function aaa(){ if(document.a.ADD01.selectedIndex==0){ alert("カテゴリを選んで下さい。");document.a.ADD01.focus();return false; }else if(document.a.EMAIL.value=="" &&document.a.TEL.value==""){ alert("メールアドレスか電話番を入力して下さい。"); document.a.EMAIL.focus(); return false; }else{ return true;} } // --> </SCRIPT> 上記の「メールアドレスか電話番号を入力して下さい。」のアラートを「メールアドレスを入力して下さい。」に変えたいのですが(document.a.EMAIL.value=="" && document.a.TEL.value=="")のどの部分までを消していいのか分かりません。

  • onchangeでロケーションジャンプしてジャンプ先を新規ウィンドウで表示したい

    よくあるロケーションジャンプを試みていますが、 ジャンプ先を新規ウィンドウで表示したいのです。。 targetはどこに指定していいのでしょうか?ご教授ください。。多分、下記のスクリプト内のどこかだと思いますが・・。 var MaxList2 = new Array(); ---省略 MaxList2[6] = 3; no_subway[6] = true; urlList2[6][0] = "↓下記よりお選び下さい"; urlList2[6][1] = "JR沿線一覧"; urlList2[6][2] = "私鉄沿線一覧"; MaxList2[7] = 4; no_subway[7] = false; urlList2[7][0] = "↓下記よりお選び下さい"; urlList2[7][1] = "JR沿線一覧"; urlList2[7][2] = "地下鉄沿線一覧"; urlList2[7][3] = "私鉄沿線一覧"; //List2 function List2Out(){ var i,n; n = document.Jump1.LTitle1.selectedIndex + 1; document.Jump2.LTitle2.options.length = MaxList2[n]; for(i = 0; i < MaxList2[n]; i++){ document.Jump2.LTitle2.options[i].text = urlList2[n][i]; } document.Jump2.LTitle2.selectedIndex = 0; } //Jump function JumpAnchor(){ var m,n; var m = document.Jump1.LTitle1.selectedIndex + 1; n = document.Jump2.LTitle2.selectedIndex; if(no_subway[m] && (n==2)){ n = 3; } location = "http://www--URLを記述"; }

  • セレクトボックスの選択肢を直前の選択で変動させたい

    お世話になります。 バイク王 http://www.8190.co.jp/ セレクトボックスを上記サイトのように 選択肢リストを直前の選択肢によって変化させて さらに、セレクトボックス横のボタンのリンクも変更させたいのですが、 どのように設定すればできますか? サイトのheadタグ内に下記の記述があるのですが、 3つ目のセレクトボックスの選択肢を設定しているのがどのファイルなのかわかりません。 上記サイトと全く同じでなくても、 セレクトボックスが3つあって、 1つ目と2つ目の選択肢によって3つ目の選択肢リストが変わり、 ボックス横のボタンのリンクも変化するフォームの作成方法を ご存じでしたら、ぜひ教えていただけないでしょうか。 よろしくお願いいたします。 <script language="javascript" type="text/javascript"> function models_gen() { if ((document.sateiform.maker_id.selectedIndex > 0)&&(document.sateiform.engine_size_id. selectedIndex > 0)){ var uri = '/online/modellist/'+document.sateiform.maker_id.value+'/'+document.sateiform.engine_size_id.value; new Ajax.Updater('placebikelist', uri, { method: 'get'}); } } function satei_prepare() { if((document.sateiform.maker_id.selectedIndex > 0) &&(document.sateiform.engine_size_id.selectedIndex > 0) &&(document.sateiform.model_id.selectedIndex > 0)){ return true; } else{ alert('バイクを選択してください'); return false; } } --> </script>

  • 基本的なプログラム

    基本的なプログラム 学校の教科書に載っている問題がわかりません。 是非教えて下さい。 Cによる基本的な条件分岐(if,else if文)のプログラムです。 西暦年(4けたの整数)を入力し、その年がうるう年かどうかを判断するプログラムを作りなさい。 4で割り切れるときはうるう年であるが、100で割り切れるときはうるう年ではない。 しかし、400で割り切れればうるう年である。 ・・・とゆう問題文です。 #include<stdio.h> int main(void) { int x; printf("西暦を入力して下さい¥n"); scanf("%d",&x); if(x%4==0) printf("うるう年である¥n"); else if(x%400==0) printf("うるう年である¥n"); else if(x%100!==0) printf("うるう年でない¥n"); else printf("うるう年でない¥n"); return 0; } ・・・とりあえず自分で考えてみたのですがどうでしょうか; 間違ってると思いますが頑張って考えました・・・;; 4けたの整数ってゆうのはどう書けばいいんでしょうか? 実際にこのプログラムは動くのでしょうか? もっと省略して書くことができるのでしょうか?  等、色々わからないことばかりです。 プログラミングの授業自体に苦手意識を持っているので得意ではありません。 間違いなど指摘していただけたらと思います!! よろしくお願いします!

専門家に質問してみよう