dポイントプレゼントキャンペーン実施中!

<!--
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));
}
// -->

すみません。
上の構文がどうしても上手くいきません。
計算結果が反映されません。

どこかおかしいのでしょうか。

不しつけながら宜しくお願いします。

A 回答 (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.ですか?
    • good
    • 0
この回答へのお礼

これです!
無事目的の計算が出来るようになりました。
本当に有難うございました。
もっと簡単に出来るかと思っていて、こんなに長文になるとは
思いもよらず、1週間ぐらい悩んでいました。
奥が深いですね。所詮素人の付け焼き刃では上手くいかないものです。
精進して、いつかこんな風に誰かを助けられたらなと思います。
改めて有難うございました。

お礼日時:2007/03/26 00:28

>早速動かしてみたのですが、ラジオボタン、チェックボックスともに


>機能してないようです。テキストフィールドは機能してます。

失礼しました。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;
}
    • good
    • 0
この回答へのお礼

修正&動作確認有難うございます。

こちらでも修正しましたが、まだチェックボックスがきちんと機能してないようです。

そして大変申し訳ないのですが、上の方の回答で決着がついてしまいました。ご協力大変有難うございました。

お礼日時:2007/03/26 00:22

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>
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
早速動かしてみたのですが、ラジオボタン、チェックボックスともに
機能してないようです。テキストフィールドは機能してます。

お礼日時:2007/03/25 19:44

こんにちは。



さておたずねの件、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));
}
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
こちらを早速動かしてみたのですがチェックボックスがきちんと
機能してないようです。テキストフィールドは機能してます。

お礼日時:2007/03/26 01:56

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>

補足日時:2007/03/25 15:56
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!