- ベストアンサー
どうしても上手くいきません。
<!-- function func() { var a = eval(document.price.fa.checked); var b = eval(document.price.fb.checked); var c = eval(document.price.fc.checked); var d = eval(document.price.fd.checked); var e = eval(document.price.fe.checked); var f = eval(document.price.ff.checked); var g = eval(document.price.fg.checked); var h = eval(document.price.fh.checked); var i = eval(document.price.fi.value); document.price.fprice.value = a + f +Math.round((b + c + d + e + 6500) * (50 + g)); } // --> すみません。 上の構文がどうしても上手くいきません。 計算結果が反映されません。 どこかおかしいのでしょうか。 不しつけながら宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは <script type="text/javascript"> <!-- function calculate() { for (i=0; i<2; i++) if (document.price.elements[i].checked){ a = eval(document.price.elements[i].value);} for (i=2; i<5; i++) if (document.price.elements[i].checked){ b = eval(document.price.elements[i].value);} for (i=5; i<9; i++) if (document.price.elements[i].checked){ c = eval(document.price.elements[i].value);} for (i=9; i<11; i++) if (document.price.elements[i].checked){ d = eval(document.price.elements[i].value);} for (i=11; i<14; i++) if (document.price.elements[i].checked){ e = eval(document.price.elements[i].value);} if (document.price.ff.checked) {f = eval(document.price.elements[14].value);}else{f=0;} if (document.price.fg.checked) {g = eval(document.price.elements[15].value);}else{g=0;} if (document.price.fh.checked) {h = eval(document.price.elements[16].value);}else{h=0;} if(document.price.fi.value == ""){i=0; }else{i = eval(document.price.fi.value);} document.price.fprice.value = a + f + g + h + Math.round((b + c + d + e + 6500)*(50+i)); } function check() { txt = document.price.fi.value; for (i=0; i<txt.length; i++) { c = txt.charAt(i); if ("0123456789".indexOf(c,0) < 0) { alert("入力部に数値以外が含まれてます"); return; } } } //--> </script> <form name="price"> <input type="radio" name="fa" value="0" checked>0 <input type="radio" name="fa" value="1000">1000<br> <input type="radio" name="fb" value="0" checked>0 <input type="radio" name="fb" value="1000">1000 <input type="radio" name="fb" value="2000">2000 <br> <input type="radio" name="fc" value="0" checked>0 <input type="radio" name="fc" value="1000">1000 <input type="radio" name="fc" value="1500">1500 <input type="radio" name="fc" value="2000">2000 <br> <input type="radio" name="fd" value="0" checked>0 <input type="radio" name="fd" value="1000">1000 <br> <input type="radio" name="fe" value="0" checked>0 <input type="radio" name="fe" value="1000">1000 <input type="radio" name="fe" value="1500">1500<br> <input type="checkbox" name="ff" value="10000">10000 <input type="checkbox" name="fg" value="20000">20000 <input type="checkbox" name="fh" value="30000">30000 <br> <input type="text" name="fi" size="24" value=""><br> <input type="button" value="=" onclick="check(),calculate()"><br> <input type="text" name="fprice"> </form> こんな感じになると思うのですが・・・ 質問者様の計算式だと 最低が『325000』 (text未入力)最高『711000』 最高が『61000 + (13000 *(50 + (text入力値))』←計算が複雑なので数値があってるかは分からないです となりますがこれでO.K.ですか?
その他の回答 (4)
- venzou
- ベストアンサー率71% (311/435)
>早速動かしてみたのですが、ラジオボタン、チェックボックスともに >機能してないようです。テキストフィールドは機能してます。 失礼しました。m(_ _)m FireFox2で動作確認してエラーが無かったので油断してました。 修正します。WindwosXP IE6 Opera8 FireFox2 で動作確認しました。 function checkedValue(n){ var a = document.getElementsByName(n); for(var i = 0; i < a.length; i++){ if(a[i].checked){ return a[i].value-0; } } return 0; }
お礼
修正&動作確認有難うございます。 こちらでも修正しましたが、まだチェックボックスがきちんと機能してないようです。 そして大変申し訳ないのですが、上の方の回答で決着がついてしまいました。ご協力大変有難うございました。
- venzou
- ベストアンサー率71% (311/435)
checkedプロパティの使い方を間違っているように思います。 ループでそれぞれのcheckedプロパティを調べる必要があるのでは? 関数を一つ作ってこんな感じでどうでしょう? <script type="text/javascript"> <!-- function checkedValue(n){ var a = document.getElementsByName(n); for(i in a){ if(a[i].checked){ return a[i].value - 0; } } return 0; } function calculate() { var a = checkedValue("fa"); var b = checkedValue("fb"); var c = checkedValue("fc"); var d = checkedValue("fd"); var e = checkedValue("fe"); var f = checkedValue("ff"); var g = checkedValue("fg"); var h = checkedValue("fh"); var i = document.price.fi.value - 0; document.price.fprice.value = a + f +Math.round((b + c + d + e + 6500) * (50 + i)); } // --> </script>
お礼
ご回答有難うございます。 早速動かしてみたのですが、ラジオボタン、チェックボックスともに 機能してないようです。テキストフィールドは機能してます。
- hkd9001
- ベストアンサー率48% (99/204)
こんにちは。 さておたずねの件、JavaScript の部分だけ、下記のものにすっぽり入れ替えると、動作すると思います。あと、html の部分、表示が欠けてる(1500 ?)部分があるので、それは修正しておいてください。お願いします。 では(と、近所の居酒屋へ逃げる回答者であった[笑])。 ------------------------------------------- function calculate() { for(i=0; i<document.price.fa.length; i++){ if(document.price.fa[i].checked){ a = parseInt(document.price.fa[i].value); } } for(i=0; i<document.price.fb.length; i++){ if(document.price.fb[i].checked){ b = parseInt(document.price.fb[i].value); } } for(i=0; i<document.price.fc.length; i++){ if(document.price.fc[i].checked){ c = parseInt(document.price.fc[i].value); } } for(i=0; i<document.price.fd.length; i++){ if(document.price.fd[i].checked){ d = parseInt(document.price.fd[i].value); } } for(i=0; i<document.price.fe.length; i++){ if(document.price.fe[i].checked){ e = parseInt(document.price.fe[i].value); } } for(i=0; i<document.price.ff.length; i++){ if(document.price.ff[i].checked){ f = parseInt(document.price.ff[i].value); } } if(document.price.ff.checked) { f = parseInt(document.price.ff.value); } else { f = 0; } if(document.price.fg.checked) { g = parseInt(document.price.fg.value); } else { g = 0; } if(document.price.fh.checked) { h = parseInt(document.price.fh.value); } else { h = 0; } if(document.price.fi.value != "") { i = parseInt(document.price.fi.value); } else { i = 0; } document.price.fprice.value = a + f + Math.round((b + c + d + e + 6500) * (50 + i)); }
お礼
ご回答有難うございます。 こちらを早速動かしてみたのですがチェックボックスがきちんと 機能してないようです。テキストフィールドは機能してます。
HTMLの部分も貼ったほうが答えやすいと思いますよ。
補足
ああっ! すみません。以下がhtmlを含めたものになります。 <html> <head> <meta http-equiv="content-type" content="text/html;charset=Shift_JIS"> <meta name="generator" content="Adobe GoLive 6"> <title> </title><script type="text/javascript"> <!-- function func() { var a = eval(document.price.fa.checked); var b = eval(document.price.fb.checked); var c = eval(document.price.fc.checked); var d = eval(document.price.fd.checked); var e = eval(document.price.fe.checked); var f = eval(document.price.ff.checked); var g = eval(document.price.fg.checked); var h = eval(document.price.fh.checked); var i = eval(document.price.fi.value); document.price.fprice.value = a + f +Math.round((b + c + d + e + 6500) * (50 + i)); } // --> </script></head> <body bgcolor="#ffffff"> <form name="price" action="#"> <input type="radio" name="fa" value="0" checked>0 <input type="radio" name="fa" value="0">0 <input type="radio" name="fa" value="1000">1000<br> <input type="radio" name="fb" value="0" checked>0 <input type="radio" name="fb" value="1000">1000 <input type="radio" name="fb" value="2000">2000 <br> <input type="radio" name="fc" value="0" checked>0 <input type="radio" name="fc" value="1000">1000 <input type="radio" name="fc" value="1500">1500 <input type="radio" name="fc" value="2000">2000 <br> <input type="radio" name="fd" value="0" checked>0 <input type="radio" name="fd" value="1000">1000 <br> <input type="radio" name="fe" value="0" checked>0 <input type="radio" name="fe" value="1000">1000 <input type="radio" name="fe" value="1500"><br> <input type="checkbox" name="ff" value="10000">10000 <input type="checkbox" name="fg" value="20000">20000 <input type="checkbox" name="fh" value="30000">30000 <br> <input type="text" name="fi" size="24"><br> <input type="button" value="=" onclick="calculate()"><br> <input type="text" name="fprice"> </form> <p></p> </body> </html>
お礼
これです! 無事目的の計算が出来るようになりました。 本当に有難うございました。 もっと簡単に出来るかと思っていて、こんなに長文になるとは 思いもよらず、1週間ぐらい悩んでいました。 奥が深いですね。所詮素人の付け焼き刃では上手くいかないものです。 精進して、いつかこんな風に誰かを助けられたらなと思います。 改めて有難うございました。