JavaScriptを使用して数量の合計値を表示する方法

このQ&Aのポイント
  • JavaScriptを使用して、数量の入力値が変わるたびに各品目の合計を計算し、最終的な合計値を表示する方法について教えてください。
  • 質問者は、コード/品名/単価のデータを持っており、数量の入力値が変わるたびに各品目の合計を計算して欲しいと言っています。
  • ソースコードの一部が提示されており、それを基にJavaScriptの関数を作成する方法について詳細を教えてください。
回答を見る
  • ベストアンサー

合計値の表示

コード/品名/単価 01/鰯/10円 02/鮭/20円 というデータがあって --ソースstart-- function codeChange(c, n){ if(document.getElementById){ if(c==01){ document.getElementById("sina"+[n]).innerHTML=("鰯"); }else if(c==02){ document.getElementById("sina"+[n]).innerHTML=("鮭"); } } function suryoChange(s, n){ if(document.getElementById){ if(c==01){ document.getElementById("sum"+[n]).innerHTML=(10*s); }else if(c==02){ document.getElementById("sum"+[n]).innerHTML=(20*s); } }… <table> <tr> <td><input type="text" name="code1" onChange="javascript:codeChange(document.forms(0).code1.value, 1)"></td> <td><div id="sina1"></td> <td><input type="text" name="suryo1" onChange="javascript:suryoChange(document.forms(0).code1.value, 1)"></td> <td><div id="sum1"></td> </tr> <tr> <td><input type="text" name="code2" onChange="javascript:codeChange(document.forms(0).code2.value,2)"></td> <td><div id="sina2"></td> <td><input type="text" name="suryo2" onChange="javascript:suryoChange(document.forms(0).code2.value,2)"></td> <td><div id="sum2"></td> </tr> </table> --ソースend-- <div id="total"></div> で数量の入力値が変わるごとに 各合計のトータルの合計を表示したいのですが やり方がわかりません。 よろしくお願いします。

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

  • ベストアンサー
  • mrumesuke
  • ベストアンサー率45% (254/557)
回答No.1

可読性を上げるためにも、最低限のコメントは書くべきです。 ※ 下記ソースをコピーする時は全角スペースをタブに置き換えてください。 私からの宿題 ・コードを変えた時も合計を計算しなおした方が良いのでは? ・リロードした時に数字が残っていたらどうする? sum = new Array(); function codeChange(n){  // c=コード  // n=行  c = document.getElementById("code"+n).value;  // 品名の表示  if(document.getElementById){   if(c==01){    document.getElementById("sina"+n).innerHTML="鰯";   }else if(c==02){    document.getElementById("sina"+n).innerHTML="鮭";   } else {    document.getElementById("sina"+n).innerHTML="";   }  } } function suryoChange(n){  // c=コード  // s=数量  // n=行  c = document.getElementById("code"+n).value;  s = document.getElementById("suryo"+n).value;  // 行ごとの合計の計算と表示  if(document.getElementById){   if(c==01){    sum[n] = 10*s;   }else if(c==02){    sum[n] = 20*s;   } else {    sum[n] = "";   }   document.getElementById("sum"+n).innerHTML=sum[n];  }  // 合計の表示  if (!(isNaN(sum[1]) || isNaN(sum[2]))) {   document.getElementById("total").innerHTML = sum[1]+sum[2];  } } (略) <form> <table> <tr> <th>コード</th> <th>品名</th> <th>数量</th> <th>計</th> </tr> <tr> <td><input type="text" id="code1" onChange="javascript:codeChange(1)"></td> <td><div id="sina1"></td> <td><input type="text" id="suryo1" onChange="javascript:suryoChange(1)"></td> <td><div id="sum1"></td> </tr> <tr> <td><input type="text" id="code2" onChange="javascript:codeChange(2)"></td> <td><div id="sina2"></td> <td><input type="text" id="suryo2" onChange="javascript:suryoChange(2)"></td> <td><div id="sum2"></td> </tr> </table> </form> <div id="total"></div>

youyousuke
質問者

お礼

有難うございました。 あまり詳しい説明もつけずにすみませんでした。 今後、気おつけて質問をしたいと思います。 本当に有難うございます。

関連するQ&A

  • ラジオボタンではなくセレクトボックスで表の表示切換

    セレクトボックスで表の表示非表示を選択できるようにしたいです。最初は非表示で。jsで。 以下はその分です。 どこを変えたらいいですか。 <script type="text/javascript"> function Click_idbbb() {   if (document.all.idbbb.checked==true) {     document.all.bbb.style.display = "block"   } else {     document.all.bbb.style.display = "none"   } } function Click_idccc() {   if (document.all.idccc.checked==true) {     document.all.ccc.style.display = "block"   } else {     document.all.ccc.style.display = "none" document.getElementById('lng').innerHTML=tmp2; document.getElementById('table').innerHTML=tmp3; } </script> <div> <p> <input id ="idbbb" type="checkbox" name="kakikukeko"onclick="Click_idbbb()">かきくけこ <input id ="idccc" type="checkbox" name="sashisuseso"onclick="Click_idccc()">さしすせそ </p> <div id="bbb" style="display:none;">  <table border="1" cellspacing="2" cellpadding="0">   <tr><td>テーブル2<p></p></td></tr>  </table> </div> <div id="ccc" style="display:none;">  <table border="1" cellspacing="2" cellpadding="0">   <tr><td>テーブル3<p></p></td></tr>  </table> </div>

  • JavaScript表示切替の問題

    ボタンを押すたびに、こんにちはとこんばんはが切り替わるようにしたいのですが、 切り替わりません。なぜかわかる方がいたら教えて頂けると助かります。 <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> </head> <body> <div id="1">こんにちは</div> <input type="button" value="切替" onclick="func_switch()"> <script language="javascript" type="text/javascript"> function func_switch(){ if(document.getElementById(1).innerHTML="こんにちは"){ document.getElementById(1).innerHTML="こんばんは"; } else{ document.getElementById(1).innerHTML="こんばんは"; } } </script> </body> </html>

  • 2個選択することで初めて表示というのができない

    <!DOCTYPE html> <html> <head> <title>プルダウンのメニューを表示を2つ設定</title> <script> function selectboxChange() { var value = document.forms.form1.Select1.value; var target = document.getElementById("output"); if (value == "要素1") { target.innerHTML = "合っています。"; } else { target.innerHTML = "間違っています。"; } } //--------------------- // function selectboxChange11() { var value = document.forms.form11.Select11.value; var target = document.getElementById("output11"); if (value == "要素11") { target.innerHTML = "合っています。"; } else { target.innerHTML = "間違っています。"; } } </script> </head> <body> <div>プルダウンのメニュー1</div> <form name="form1" action=""> <select id="Select1" onchange="selectboxChange();"> <option>---</option> <option value="要素1">要素1</option> <option>要素2</option> <option>要素3</option> <option>要素4</option> <option>要素5</option> </select> </form> <div id="output"></div> <div>プルダウンのメニュー2</div> <form name="form11" action=""> <select id="Select11" onchange="selectboxChange11();"> <option>---</option> <option value="要素11">要素1</option> <option>要素2</option> <option>要素3</option> <option>要素4</option> <option>要素5</option> </select> </form> <div id="output11"></div> </body> </html> ↑はjsの分ですが、 2個選んだら初めてイベントが発生するプログラムを作成しているのですが、 いかんせんうまくいきません。 恐らく、var value = document.forms.form1.Select1.value;のところで、躓いているのだと思います。 document.formsにカンマをつけてみたり、さらに、両端に[]をつけてみたり、いろいろ試しましたが、うまくいきません。 それとも、重ねること自体ができないのでしょうか。 どうしたらいいのでしょうか。

  • 要素の表示/非表示の実験

    をしてみました。 <input type="button" onclick="f()" value="push"/> <input type="button" onclick="g()" value="push"/> <table> <tr><td>a</td><td>b</td><td>c</td></tr> <tr id="x"><td>x</td><td>y</td><td>z</td></tr> <tr><td>u</td><td>v</td><td>w</td></tr> <tr id="y"><td>x</td><td>y</td><td>z</td></tr> <tr><td>a</td><td>b</td><td>c</td></tr> </table> <script> function f() { var x=document.getElementById('x').style.visibility; if(x=='hidden') document.getElementById('x').style.visibility='visible'; else document.getElementById('x').style.visibility='hidden'; } function g() { var x=document.getElementById('y').style.display; if(y!='none') document.getElementById('y').style.display='none'; else document.getElementById('y').style.display='block'; } </script> です。 最初のボタンは単に表示するかどうかだけで位置は消えた場所に詰められません。 次のボタンは消えるとその場所に他の要素が詰められます。しかし消えたものは次にボタンを押しても消えたままです。 消えた場所に要素が詰められしかも再表示できるようにするにはどうしたらいいのでしょうか?

  • <form>でアップロードする画像を表示させたい

    <form>でユーザーの名前や顔写真を入力してもらってサーバーに送るルーチンを作っています。ユーザーがアップロードしたい自分の写真を選んだときに、確認のためにその写真を表示させたくて、下のようなコードを書きましたが、写真が表示されません。 いろいろやっていて、<input type="file">を参照したときに戻される値は、写真のフルパスではなくて最後のファイル名だけだとわかりましたが、これをフルパスのURLで取得する方法はないでしょうか? <script type="text/javascript" language="javascript"> function dispGazo(){ document.getElementById("kao").src="'"+document.getElementById("userGazo").value+"'"; } function checkInput(){ if( document.forms[0].userName.value == ""){ alert("お名前は必ず入力してください。"); return; } } </script> . . . . <form enctype="multipart/form-data" accept-charset="UTF-8" method="post" action="QAtouroku.php" onsubmit="checkInput();"> <table border="1" width=80%> <tr><td>お名前:<input type="text" name="userName" size=30> </td></tr> <tr><td>お写真:<input type="file" name="userGazo" id="userGazo" size=80 value="右のボタンを押して、登録する画像ファイルを探します。" onchange="dispGazo();"></td> </tr> <tr><td><img id="kao" width=100 alt="写真" ></td></tr> . . . </table> </form> どうかよろしくお願いします。 papashiro

  • jsでプルダウンで選択したものがうまく表示されない

    以下のhtml文があります。 <!DOCTYPE html> <html> <head> <title></title> <script language="javascript" type="text/javascript"> function onButtonClick() { var val = document.forms.form1.textBox1.value; var target = document.getElementById("output"); if (val == "Penguin") { target.innerHTML = "合っています。"; } else { target.innerHTML = "間違っています。"; } } </script> </head> <body> <form action="" id="form1"> <div>"Penguin"と入力してください。</div> <input id="textBox1" type="text" value="" /> <input type="button" value="Exec" onclick="onButtonClick();" /> </form> <div id="output"></div> </body> </html> Penguinと入力すると合っていますと表示が出ます。 これを、プルダウン方式にしました。 <!DOCTYPE html> <html> <head> <title></title> <script language="javascript" type="text/javascript"> function selectboxChange() { var val1 = document.forms.form1.Select1.value1; var target = document.getElementById("output"); if (val1 == "要素1") { target.innerHTML = "合っています。"; } else { target.innerHTML = "間違っています。"; } } </script> </head> <body> <form name="form1" action=""> <select id="Select1" onchange="selectboxChange();"> <option>---</option> <option value1 == "要素1">要素1</option> <option>要素2</option> <option>要素3</option> <option>要素4</option> <option>要素5</option> </select> </form> <div id="output"></div> </body> </body> </html> これにすれば、要素1を選択すれば、会っていますと表示されるのですが、されません。 どうしたら改善されますか。

  • 表示させた文字を1つだけ戻す方法は?return?

    下記コードのif文のところでelseになった場合にreturnにしています。 returnではなくstLoad()にすれば、全てリセットされ最初からやり直しになりますが、 最初からやり直しでなく、一致しているところまで残して途中からやり直す場合は どのようにすればいいでしょうか。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <script language="JavaScript"> <!-- var i = 1; var stMihon; function stLoad(){ document.getElementById("anser").innerHTML = ""; } function st(n){ stMihon = "1357924680".substring(0,i); document.getElementById("anser").innerHTML += n; if(document.getElementById("anser").innerHTML==stMihon){ i++; }else{ alert("もう一度"); return; //不一致のときに1文字消し入力前に戻す } } //--> </script> <style type="text/css"> p{width:330px; padding:5px; background-color:#ddd;} #anser{color:#f00;padding:10px;width:330px;} table{border:1px solid #000;background-color:#eee;width:200px;height:220px;margin-left:60px;} td{border:1px solid #000;font-size:20px;text-align:center;} </style> </head> <body onload="stLoad()"> <p>下記ボタンを押して1357924680と<br>入力して下さい。</p> <div id="anser"></div> <table> <tr> <td onClick="st(1)">1</td> <td onClick="st(2)">2</td> <td onClick="st(3)">3</td> </tr> <tr> <td onClick="st(4)">4</td> <td onClick="st(5)">5</td> <td onClick="st(6)">6</td> </tr> <tr> <td onClick="st(7)">7</td> <td onClick="st(8)">8</td> <td onClick="st(9)">9</td> </tr> <tr> <td colspan="2" onClick="st(0)">0</td> <td id="en" onClick="st('.')">.</td> </tr> </table> </body> </html>

  • Firefoxで表示できないのは何故でしょう?

    お世話になります IE6、Operaでは表示できたのですがFirefoxでは表示できませんでした(><) 何か見落としがあるのでしょうか? <script language="javascript"> <!-- window.onload = function() { n=document.getElementById("div1").innerText; if(n == "a0"){ document.getElementById("img1").style.display = "block"; document.getElementById("img1").style.top = "100px"; document.getElementById("img1").style.left = "100px"; } if(n == "a"){ document.getElementById("img2").style.display = "block"; document.getElementById("img2").style.top = "100px"; document.getElementById("img2").style.left = "200px"; } } //--> </script> <div id="div1">a</div> <form action="test.cgi" method="post"> <input type="hidden"name="a" value="leap_day"> <input type="image" src="sample0.gif" id="img1" style="position:absolute;display:none;"> </form> <form action="test.cgi" method="post"> <input type="hidden"name="b" value="leap_day"> <input type="image" src="sample1.gif" id="img2" style="position:absolute;display:none;"> </form> n=document.getElementById("div1").innerText; if(n == "a0"){ } if(n == "a") { } を消すと表示はできるのですが・・・

  • JavaScriptでの表の行の表示・非表示の切り替え

    現状では、テスト1を選んだときだけテキストを出すことはできるのですが、どうしても2行表示するという事ができません。 テスト1を選択した時だけ2行表示し、テスト1以外を選択した時は非表示にするにはどうすればよいのでしょうか。 <html> <head> <title>テスト</title> <script type="text/javascript" language="JavaScript"> <!-- function showthis(sel) { var value = sel.options[sel.selectedIndex].value; if(value == "test1"){ if(document.getElementById){ if(document.getElementById(value).style.display == "block"){ document.getElementById(value).style.display = "none"; }else{ document.getElementById(value).style.display = "block"; } } } else if(value != "test1"){ if(document.getElementById){ document.getElementById("test1").style.display = "none"; } } } // --> </script> </head> <body> <table border="1" width="367"> <tr> <td width="134"> <form> <select onchange="showthis(this)"> <option selected="selected">選んでください</option> <option value="test1">テスト1</option> <option value="test2">テスト2</option> <option value="test3">テスト3</option> </select> </form> </td> <td width="217"> <p>テスト</p> </td> </tr> <tr> <td width="134"> <p>&nbsp;</p> </td> <td width="217"> <p>&nbsp;</p> </td> </tr> </table> <div id="test1" style="display:none;"> (本来はここに2行追加したい) </div> </body> </html>

  • イベントバブル、マウスオーバーなどに関して

    http://okwave.jp/qa/q6681276.html に関連しますが divの中に、p、ulが同列にあり div領域からmouseoutしたらイベントが起きるようにしたいと思っています。 イベントは親要素に伝播するということなので event.cancelBubble = true; window.event.cancelBubble=true; をp,ulのイベントに入れました。 又、各要素のマウス状態の履歴をテーブルに残してみました(下にソース)。 (マウスアウトしたら「x」、オーバーで「o」) その結果、 バブリング防止策を講じたため pまたはulのマウスアウトはdivに伝わっていません(ただしFirefoxではダメ?)。 ところがよく見ると div→p div→ul と移動する際、div内ではありますが divは一旦マウスアウトしてから再びマウスオーバーとなっているようです。 まず、ここまでの理解は間違っていないでしょうか? そして、境界線をまたぐ際、マウスアウトになるのはどうにもならないのでしょうか? 基本的な質問で申し訳ありませんが、よろしくお願いします。 --------------------------------------------------------------------------------------------- <script style="text/javascript"> function divOn() { document.getElementById('atDiv').innerHTML=document.getElementById('atDiv').innerHTML+'o'; } function divOff() { document.getElementById('atDiv').innerHTML=document.getElementById('atDiv').innerHTML+'x'; } function pOn() { document.getElementById('atP').innerHTML=document.getElementById('atP').innerHTML+'o'; } function pOff() { document.getElementById('atP').innerHTML=document.getElementById('atP').innerHTML+'x'; } function ulOn() { document.getElementById('atUl').innerHTML=document.getElementById('atUl').innerHTML+'o'; } function ulOff() { document.getElementById('atUl').innerHTML=document.getElementById('atUl').innerHTML+'x'; } function stopBubbling() { event.cancelBubble=true; stopPropagation=true; } </script> <div onMouseover="divOn();" onMouseout="divOff();" style="background:#fee;padding:1em;height:300px;">div <p onMouseover="pOn();" onMouseout="stopBubbling();pOff();" style="background:#efe;height:100px;">p</p> <ul onMouseover="ulOn();" onMouseout="stopBubbling();ulOff();" style=";background:#eef;height:100px;"> <li><a>li</a></li> <li><a>li</a></li> </ul> </div> <table border="1"> <thead> <tr> <th>div</th> <th>p</th> <th>ul</th> </tr> </thead> <tbody> <tr> <td id="atDiv"><br /></td> <td id="atP"><br/></td> <td id="atUl"><br/></td> </tr> </tbody> </table>

専門家に質問してみよう