• 締切済み

nameとidで区別できない値の自動計算について

皆さんの質問や回答を参考にさせていただいている初心者です。 人参・大根・キャベツなどと複数のセレクトメニューがあり、他のスクリプトの都合上すべて同一のnameとid(例えばnameは全部Aでidは全部B)になってて、これは変えられない状況です。人参と大根とキャベツの区別なく全てのセレクトメニューで選ばれた野菜の合計を瞬時にテキストエリアに表示する方法がありましたら、できればソース付きでお教えください。 よろしくお願いいたします。

みんなの回答

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

こんなかんじでどうでしょ? 仕様は#3さんのを真似ました。 <script> function calc( obj ){ var count=0; var f=obj.form; for(var i=0;i<f.length;i++){ if(f[i].name=="A" && f[i].value!="") count++; } f.output.value = count+"個選択"; } </script> <form> <select name="A" onChange="calc( this );"> <option value="">選択なし <option value="人参">人参 <option value="大根">大根 <option value="キャベツ">キャベツ </select> <select name="A" onChange="calc( this );"> <option value="">選択なし <option value="人参">人参 <option value="大根">大根 <option value="キャベツ">キャベツ </select> <select name="A" onChange="calc( this );"> <option value="">選択なし <option value="人参">人参 <option value="大根">大根 <option value="キャベツ">キャベツ </select> <br> <textarea name="output">0個選択</textarea> </form>

回答No.4

nameが同じならgetElementsByName('A')や document.forms[0].elements['A']で取得すればいいのでは? IDの重複は(ry

  • da-te
  • ベストアンサー率37% (3/8)
回答No.3

こんにちは。 ご回答ありがとうございます。 ・HTML <form name="main"> <select name="A" id="B" onChange="calc( this );"> <option value="選択なし"> <option value="人参">人参 <option value="大根">大根 <option value="キャベツ">キャベツ </select> <select name="A" id="B" onChange="calc( this );"> <option value="選択なし"> <option value="人参">人参 <option value="大根">大根 <option value="キャベツ">キャベツ </select> <select name="A" id="B" onChange="calc( this );"> <option value="選択なし"> <option value="人参">人参 <option value="大根">大根 <option value="キャベツ">キャベツ </select> <textarea name="output"></textarea> </form> ・SCRIPT var noSelected = "選択なし"; var count = 0; function calc( obj ){ if( obj.value != noSelected ){ count++; }else if( obj.value == noSelected ){ count--; } outPut( ); } function outPut( ){ document.main.output.value = count; } こんな感じでいかがでしょうか。 #余談ですが、ANo.1の内容は至極重要ですので、 #今後の開発などでは考慮する事を強くお勧めします。

  • da-te
  • ベストアンサー率37% (3/8)
回答No.2

こんにちは。 >人参と大根とキャベツの区別なく全てのセレクトメニュー この部分がちょっとイメージできません。 1.複数のセレクトボックスがあって、それぞれに同じ野菜名がメニューになっているということでしょうか? 2.それぞれの野菜名でセレクトボックスがあるという事でしょうか? よろしくお願いします。

hirok2
質問者

お礼

拙い説明で申し訳ございません。 はい、人参や大根など複数のセレクトボックスがあるのですが、内容的には同じ物であるということなんです。よろしくお願いいたします。

noname#108740
noname#108740
回答No.1

HTMLはname属性は一つの文書の中で複数存在してもいいですが、 id属性は複数存在してはいけません。 これはバグの原因にもなりますから、修正したほうがいいです。

関連するQ&A

  • シュウ酸の少ない生野菜は?

    キャベツや人参、トマト、レタス、大根など、生で食べる野菜はほとんどシュウ酸が多めなようです。なにかシュウ酸が少なくて生で食べやすい野菜はないでしょうか? よろしくお願いします。

  • javascript 「折りたためるリスト」

    javascript初学者です。 「折りたためるリスト」について、皆さまにお教え頂きたいことがあり投稿しました。 以下のプログラムのような「折りたためるリスト」があると仮定します。「野菜すべて」をクリックすると、「大根、にんじん、レタス」が表示される折りたためるリストです。 通常、折りたたまれたリストを表示した後にリロードすればリストがたたまれてしまいますが、リロードしてもなおリストがたたまれず、「大根、にんじん、レタス」が表示された状態のままにするにはプログラムをどのように改良すればよいでしょうか。 (例:大根とにんじんにチェックを付けた後にリロードすると、リストがたたまれてしまうため何にチェックが付いているのかわからなくなってしまいます。リロードしてもリストが閉じることなく、リストを表示したままにしたい、と一生懸命やっているのですが、私のjavascriptの知識では解決できないのです(涙)。) なにぶんjavascriptが苦手でどうにもお手上げ状態です。 大変お手数をお掛けしますが、どうぞよろしくお願いいたします。 「折りたためるリスト」プログラム ----------------------------------------------------------------------- <html> <body> <input id="all" name="test1" type="checkbox" value="1"><a href="URL" onclick="oritatami('1');return false">野菜すべて</a><br> <div id="1" style="display:none">   <input name="test1" type="checkbox" value="10">大根<br>   <input name="test1" type="checkbox" value="11">にんじん<br>   <input name="test1" type="checkbox" value="11">レタス<br> </div> <script type="text/javascript"> function oritatami(id){ obj=(document.all)?document.all(id):((document.getElementById)?document.getElementById(id):null); if(obj) obj.style.display=(obj.style.display=="none")?"block":"none"; } </script> </body> </html> -----------------------------------------------------------------------

  • 野菜って冷凍保存できるんですか?

    人参や大根、キャベツや白菜など、冷蔵庫に入れておいても日持ちのしない野菜を冷凍保存できるんでしょうか? 野菜って冷凍保存できるのか疑問に思いました。 宜しくお願いします

  • この食事続けるとどうなりますか

    カロリー計算が出来ないので教えていただきたいです。 ライスペーパーに ささみ セロリ 人参 大根 大葉 もやし キャベツ 梅 などの中から、ささみと上の野菜を2、3種類選んで巻いて食べてます。 カロリー的にはどうなのでしょうか? 朝はきちんと食べてます。 昼にこのメニューを食べてます。

  • 固い野菜の切り方

    閲覧ありがとうございます。 硬い野菜の切り方なんですが うまくきれません。 ほかの食材(お肉、キャベツ、大根など)はきれるんですが、人参やサツマイモは切れません。 生の野菜です。 切ろうとするとまっすぐ切れずにナナメになったり 切り口がガタガタになったりでうんざりです。 ものすごい力をいれないときれません。 他の食材はきれて人参だけ切れないってありえませんよね。 どうしたら楽に、綺麗に切れるか教えてください。 茹でるとかはなしでお願いします。

  • 計算された値をselectboxにselectedしたい

    セレクトボックスAとセレクトボックスBの選択された値を加算し、その値をセレクトボックスCにselectedしたいです。 計算はできているので後は、セレクトボックスCにselectedするだけですが、その方法がわかりません。 言語はJavascriptとHTMLです。 ご回答お願いします。 現状のソースコードは以下のとおりです。 なお、セレクトボックスAとセレクトボックスBの<option>タグの中身は省略(0~23までの数値)します。 <ソースコード> <html> <head> <script type="text/javascript"> function schedule_end_time(){ var val1=parseInt(document.form1.schedule_start_jikan.value,10); var val2=parseInt(document.form1.work_jikan.value,10); var val3=val1+val2; </script> </head> <body> <form method="GET"> <td><select name="schedule_start_jikan" onchange="schedule_end_time()"></select></td> セレクトボックスA <td><select name="work_jikan" onchange="schedule_end_time()"></select></td> セレクトボックスB <td><select name="schedule_end_jikan"><option value="ここをセレクトボックスAとセレクトボックスBの合計にしたい" selected>××</option> </form> </body> </html>

  • メールフォーム内の自動計算 valueの値を2つの目的で使いたい

    以下の様な形で、自動計算フォームを作っています。 金額は「value=" "」から計算されているのですが、この部分は同時に使おうと思っているメール送信の商品名の部分にあたります。 このまま送信してしまうと、商品名が数字だけになってしまうのですが、何かよい方法をご存知でしょうか・・・。 メール送信のプログラムは私の方では変えられないので、出来れば以下の自動計算フォームを変える事で解決できたらと思っています。 javascriptは専門ではないのですが、こつこつ勉強中です。よろしくお願いいたします。 -------------------------------------------------------- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Untitled Document</title> <script type="text/javascript"> <!-- function cal(){ var price1 = document.mail_form.goods1.options[document.mail_form.goods1.selectedIndex].value; var price2 = document.mail_form.goods2.options[document.mail_form.goods2.selectedIndex].value; var total = parseInt(price1) + parseInt(price2); document.mail_form.field_total.value = total; // 合計 } // --> </script> </head> <body> <form name="mail_form"> <p id="mail-form-box1"> ●商品1<br /> <select name="goods1" onChange="cal()"> <option value="100">バッグA 100円</option> <option value="200">バッグB 200円</option> <option value="300">バッグC 300円</option> </select> </p> <p id="mail-form-box2"> ●商品2<br /> <select name="goods2" onChange="cal()"> <option value="100">靴A 100円</option> <option value="200">靴A 200円</option> <option value="300">靴A 300円</option> </select> </p> 合計: $<input type="text" name="field_total" value="0"><BR> </form> </body> </html> --------------------------------------------------------

  • selectが複数ある場合の値取得について

    お世話になります HTML内に下記のようなフォームが複数存在しています。 select[name="page_name"]が変更されたときに値を取得しPHP に送信したいのですが、一番上にあるselectの値が取得されてしまいます。 ひとつのscriptで複数のselectに対応したい場合、どのような記述になりますでしょうか? 助けていただきたいです。よろしくお願いします。 <!--1番目のセレクト--> <form method="post" action="javascript:void(0);"> <input type="hidden" id="img_id" name="img_id" value="3"> <select name="page_name"> <option value="">選択してください</option> <option id="page_name" value="1">あああ</option> <option id="page_name" value="2">いいい</option> <option id="page_name" value="3">ううう</option> </select> </form> <!--2番目のセレクト--> <form method="post" action="javascript:void(0);"> <input type="hidden" id="img_id" name="img_id" value="4"> <select name="page_name"> <option value="">選択してください</option> <option id="page_name" value="1">あああ</option> <option id="page_name" value="2">いいい</option> <option id="page_name" value="3">ううう</option> </select> </form> <!--3番目のセレクト--> ---省略--- /*script*/ $('select[name="page_name"]').change(function() { var data = { 'page_name' : $('#page_name').val(), 'img_id' : $('#img_id').val() }; $('#name').text(data['img_id']); $.ajax({ type: "POST", url: "/admin/change/", data:data }); alert("画像使用ページを変更しました!"); return false; }); });

  • 野菜

    マンションの1Fに住んでいて庭があるのですが手入れをしていないのですが、使える事は使えます。 そこで最近野菜が高いので家の庭で野菜を育てたいと思いました。 ですが、野菜を育てた事がないので、簡単な物から始めたいと思っています。 簡単ではないけど、大根や人参、キャベツやほうれん草がよく使えていいと思っているのですが… 何から始めていいのか、何を用意すればいいのか…など手順や知識を教えて下さい!

  • セレクトの値を取得できない

    <select name='aaa' id='aaa'> <option value='5'>5</option> <option value='6'>6</option> </select> <script> var bbb = document.getElementById('aaa'); document.open(); document.write(bbb); document.close(); </script> のように書いたのですが [object HTMLSelectElement] と表示されます。 何がいけないのでしょうか?