• ベストアンサー

どうしても上手くいきません。

<!-- 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)); } // --> すみません。 上の構文がどうしても上手くいきません。 計算結果が反映されません。 どこかおかしいのでしょうか。 不しつけながら宜しくお願いします。

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

  • ベストアンサー
  • leap_day
  • ベストアンサー率60% (338/561)
回答No.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.ですか?

blue_sick
質問者

お礼

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

その他の回答 (4)

  • venzou
  • ベストアンサー率71% (311/435)
回答No.4

>早速動かしてみたのですが、ラジオボタン、チェックボックスともに >機能してないようです。テキストフィールドは機能してます。 失礼しました。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; }

blue_sick
質問者

お礼

修正&動作確認有難うございます。 こちらでも修正しましたが、まだチェックボックスがきちんと機能してないようです。 そして大変申し訳ないのですが、上の方の回答で決着がついてしまいました。ご協力大変有難うございました。

  • venzou
  • ベストアンサー率71% (311/435)
回答No.3

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>

blue_sick
質問者

お礼

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

  • hkd9001
  • ベストアンサー率48% (99/204)
回答No.2

こんにちは。 さておたずねの件、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)); }

blue_sick
質問者

お礼

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

noname#44015
noname#44015
回答No.1

HTMLの部分も貼ったほうが答えやすいと思いますよ。

blue_sick
質問者

補足

ああっ! すみません。以下が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>

関連するQ&A

  • evalで数値に変換してる筈なのですが・・・NaN

    今、JavaScriptを勉強中なのですが… Nanと言う表示が出てしまうと言う事は数値じゃないと言う事ですよね? どうしても一人の力では脱出できませんのでお助けください! どなたか是非ご教授よろしくお願いします。 var item=["N-01ネックレス","N-02ネックレス","EA-01イヤリング","KS-01携帯ストラップ"]; var g=[10,15,20,30]; var p=[1000,800,600,600]; function n01(){ var gtotal=0; var guram=0; for(a=0;a<4;a++) { if(document.form.elements[a].checked){ document.form.elements[11+(a*3)].value=item[a]; guram=eval(document.form.elements[12+(a*3)].value=g[a]); price=eval(document.form.elements[13+(a*3)].value=p[a]); }else{ document.form.elements[11+(a*3)].value=""; guram=eval(document.form.elements[12+(a*3)].value=0); price=eval(document.form.elements[13+(a*3)].value=0); } gtotal=gtotal+guram[a]; } document.form.elements[23].value=gtotal; }

  • ジャバスクリプトで自動計算表を作ったのですが、IEでは動くのですが、フ

    ジャバスクリプトで自動計算表を作ったのですが、IEでは動くのですが、ファイヤーフォックスでは動きません。どこに不具合があるのでしょうか? 問題のフォームはこちらです http://tatamitai.com/form1-11.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML lang="ja"> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>メールフォーム</TITLE> <META http-equiv="Content-Style-Type" content="text/css"> <META name="description" content="メールフォーム"> <META name="keywords" content="メルマガ,ホームページ,サイト制作"> <script type="text/javascript"> <!-- function keisan(){ // 設定開始 // 商品1 var price1a = 3680; var price1b = document.form1.格安コース:数.selectedIndex * 1; // 単価を設定 var price1c = document.form1.格安コース:工期等課金.value * 1; // 単価を設定 var price1d = document.form1.格安コース:柄.value * 1; // 単価を設定 var price1e = document.form1.格安コース:シート.value * 1; // 単価を設定 var price1f = document.form1.格安コース:乾燥.value * 1; // 単価を設定 var total1 = document.form1.格安コースの小計.value = (price1a + price1c + price1d + price1e + price1f) * price1b; // 小計を表示 // 商品2 var price2a = 4900; var price2b = document.form1.標準コースA:数.selectedIndex * 1; // 単価を設定 var price2c = document.form1.標準コースA:工期等課金.value * 1; // 単価を設定 var price2d = document.form1.標準コースA:柄.value * 1; // 単価を設定 var price2e = document.form1.標準コースA:シート.value * 1; // 単価を設定 var price2f = document.form1.標準コースA:乾燥.value * 1; // 単価を設定 var total2 = document.form1.標準コースAの小計.value = (price2a + price2c + price2d + price2e + price2f) * price2b; // 小計を表示 // 合計を計算 var total = total1 + total2; // 設定終了 document.form1.合計.value = total; // 合計を表示 } // --> </script> <STYLE type=text/css> <!-- A:link { FONT-SIZE: 10pt; COLOR: #ff0000; TEXT-DECORATION: none ;} A:visited { FONT-SIZE: 10pt; COLOR: #ff0000; TEXT-DECORATION: none ;} A:active { FONT-SIZE: 10pt; COLOR: #ff0000; TEXT-DECORATION: none ;} A:hover { FONT-SIZE: 10pt

  • javascriptでtoFixedを切り捨てに

    javascriptの知識が乏しく苦戦しております。 レートを含む計算式をサイトに載せる時に、変動する数字を書きなおして、電卓で計算するのが手間で、 変動した数値を代入するだけで計算結果が表示されるようにしたいと思います。 javascriptを使えばできるかと思い、書いてみて、四捨五入での形式ではなんとか形になったのですが、後から四捨五入ではなく小数点以下切り捨てで表示させたいと思いました。 切り捨ての際の書き方がわからず、上手くいかないのでご助言いただけますと幸いです。 ■下記が現状です <SCRIPT LANGUAGE="JavaScript"> <!-- var a; var b; var c; var d; var e; var f; var yakujyo; var risoku; var uketori; a = 20000; b = 1.0275; c = 90.10; d = 0.1025; e = 129; f = 360; yakujyo = (a * b * c).toFixed(0); risoku = ((a * d ) * (e / f) * c).toFixed(0); uketori = ((a * b * c) + ((a * d ) * (e / f) * c)).toFixed(0);   bb = (b * 100).toFixed(2); dd = (d * 100).toFixed(2); //計算式 document.write ("<h3>計算式(為替:1オーストラリアドル=",c,"円と仮定)</h3>"); document.write ("◆2万オーストラリアドルを購入、債券単価",bb,"%の場合<br />"); document.write ("<b>約定代金</b>&nbsp; ",a,"AUD×",bb,"%×",c,"円=",yakujyo.replace(/(\d)(?=(\d{3})+$)/g, "$1,"),"円<br />"); document.write ("<b>利息</b>&nbsp; ",a,"AUD×",dd,"%×(",e,"/",f,")※×",c,"円=",risoku.replace(/(\d)(?=(\d{3})+$)/g, "$1,"),"円<br />"); document.write ("<b>受取金額</b>&nbsp",yakujyo.replace(/(\d)(?=(\d{3})+$)/g, "$1,"),"円+",risoku.replace(/(\d)(?=(\d{3})+$)/g, "$1,"),"円=",uketori.replace(/(\d)(?=(\d{3})+$)/g, "$1,"),"円<br /><br />"); // --> </SCRIPT>

  • チェックボックスでの値を足してそれぞれの結果を表示したい

    はじめて投稿します。超ウルトラ初心者ですが非常に困っていますので、どなたか助けてください。HTMLはなんとか読めますが、Javascriptは初めてで1週間前に本を買って調べたり、HP検索してみたりしましたが、どうしても分かりません。 90のチェックボックスがあり、それぞれ9つの名前がつけられています。しかし、順番には並んでいません。 9つの名前ごとにチェックされた数を診断ボタンを押すとテキストボックスに表示させるようにするにはどうしたらいいのでしょうか。 <SCRIPT type="text/javascript"> <!-- var a,b,c,d,e,f,g,h,j = 0; function test(){ for( i=0;i<90;i++){ if(document.f1.ts1[i].checked){ document.f1.tp1.value= a +=parseInt(document.f1.ts1.value); } else if(document.f1.ts2[i].checked){ document.f1.tp2.value= a +=parseInt(document.f1.ts2.value); } ・     ・(以下9までつづく)     ・ } } document.f1.tp1.value= a; document.f1.tp2.value= b;     ・     ・(以下9まで)     ・ } //--> </SCRIPT> <INPUT type="checkbox" name="ts1" value="1"> (同じく90つづく"ts1"がts2.3.4.・・・ <INPUT type="button" value="診断" onClick="test(this.form)">  すごく馬鹿にされるようなタグかもしれませんが、本を片手に毎日悪戦苦闘しながらつくりました。 たぶん肝心のところがちがっていると思うのですが、それが何かも分かりません。身の程知らずなのは重々承知の上で投稿しました。よろしくお願いします。

  • 複数のcookieでの保存

    javescriptはかなりの初心者です。 サイトや本のサンプルで勉強してテキストボックス、チェックボタン、 ラジオボタンに記入した内容を保存するcookieの作成を試みたのですが 上手くいきません;; どなたかご教授よろしくお願いします。 やりたい事はフォームに記入・チェックした内容をセレクトボタン 「保存1」「保存2」・・・と選択したら、それぞれにセーブ・ロードを複数記憶させたいと思っています。 5つほどの記憶を予定しています。 実際に保存させるフォーム数は数十個以上あり、テキストボックスの記入内容は数字だけの予定です。 また、それらは別途の計算するスクリプトでの入力内容として使っています。(競合とかの問題もあるのでしょうか?) なお、下記の状態でもラジオボタンだけは保存も出来ませんでした; 作成したものを載せましたが、なにぶん初心者の作成したscriptな だけに役に立たない構文で、説明不足もあるかもしれませんがよろしくお願いします。 <HTML> <HEAD> <script language="JavaScript"> <!-- function set_cookie(){ var a = document.getElementById('myform').a.value; var b = document.getElementById('myform').b.selectedIndex; var c = document.getElementById('myform').c.selectedIndex; var d = document.getElementById('myform').d.checked; var e = document.getElementById('myform').e[0].checked; var f = document.getElementById('myform').e[1].checked; EXP=new Date(); EXP.setTime(EXP.getTime()+(30*1000*60*60*24)); document.cookie= a+"["+b+"["+c+"["+d+"["+e+"["+f+"["+";expires="+EXP.toGMTString(); } function get_cookie(){ var GET=document.cookie; GET=GET.split("["); document.getElementById('myform').a.value = GET[0]; document.getElementById('myform').b.selectedIndex = GET[1]; document.getElementById('myform').c.selectedIndex = GET[2]; document.getElementById('myform').d.checked = GET[3]; document.getElementById('myform').e[0].checked = GET[4]; document.getElementById('myform').e[1].checked = GET[5]; } --> </script> </HEAD> <BODY> <form id="myForm">テキスト1<BR> <INPUT size="20" type="text" maxlength="10" value="0" name="a"><BR> <BR> セレクト1<BR> <SELECT size="2" name="b"> <OPTION value="0" selected>0</OPTION> <OPTION value="1">1</OPTION> <OPTION value="2">2</OPTION> <OPTION value="3">3</OPTION> <OPTION value="4">4</OPTION> <OPTION value="5">5</OPTION> </SELECT><BR> <BR> セレクト2<BR> <SELECT name="c"> <OPTION value="0" selected>0</OPTION> <OPTION value="1">1</OPTION> <OPTION value="2">2</OPTION> <OPTION value="3">3</OPTION> <OPTION value="4">4</OPTION> <OPTION value="5">5</OPTION> </SELECT><BR> <BR> チェック1<BR> <INPUT type="checkbox" name="d" value="0"><BR> <BR> ラジオ1<BR> <INPUT type="radio" name="e" value="0"><BR> <INPUT type="radio" name="e" value="1"><BR> <BR> <BR> <SELECT name="selectsave"> <OPTION selected>保存1</OPTION> <OPTION>保存2</OPTION> <OPTION>保存3</OPTION> <OPTION>保存4</OPTION> <OPTION>保存5</OPTION> </SELECT><BR> <BR> <INPUT type="button" value="セーブ" name="save" onclick="set_cookie()"> <P><INPUT type="button" value="ロード" name="lord" onclick="get_cookie()"><BR> </P> </form> </BODY> </HTML>

  • Java 計算結果の表示ボックスの書式を変えたい

    計算結果が表示されるボックスの表示(回答(1)(2)(3)のみ)を下記のようなバリエーションで変えたいのですが、どのように記述すれば良いでしょうか。 (1)枠線の色を変えたい (2)枠線の太さを変えたい (3)枠線内(ボックス)を一定の時間で、任意の色で点滅させたい(現在は条件をつけて枠内の色が変わるように記述しています) よろしくお願い致します。 <HTML xmlns="http://www.w3.org/1999/xhtml" lang="ja"> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <TITLE>計算テスト</TITLE> </HEAD> <BODY bgcolor="#FFFFCC"> <FONT SIZE="3"> <SCRIPT language="JavaScript"> <!-- function keisan1(x1,x2){ a=0.2*(eval(x1)/10)*(eval(x1)/10)*Math.sqrt(eval(x2))*1000; return a.toFixed(0);} function keisan2(x1,x2,x3,x4,s1){ b=eval(x2)+Math.pow((0.2*(eval(x1)/10)*(eval(x1)/10)*Math.sqrt(eval(x2))),2)*eval(document.getElementById('s1').value)*eval(x3)+0.1*eval(x4); return b.toFixed(2);} function keisan3(x1,x2){ c=20*(eval(x1)/10)*(eval(x1)/10)*(eval(x2)); return c.toFixed(0);} function calc(){ // ← 計算ボタンが押されたらこの関数が呼ばれる   var d1 = document.fk.d1;   var d2 = document.fk.d2;   var d3 = document.fk.d3;   var d4 = document.fk.d4;   var s1 = document.fk.s1;   var ans1 = keisan1(d1.value, d2.value);   var calc1 = document.fk.calc1;   calc1.value = ans1;   var ans2 = keisan2(d1.value, d2.value, d3.value, d4.value, s1.value);   var calc2 = document.fk.calc2;   calc2 .value = ans2 ;   if(ans2 >= 0) calc2.style.color = "#e60000";   if(ans2 >= 0) calc2.style.backgroundColor = "#ffffff";   if(ans2 >= 1.4) calc2.style.color = "#ffffff";   if(ans2 >= 1.4) calc2.style.backgroundColor = "#e60000";   var ans3 = keisan3(d1.value, d2.value);   var calc3 = document.fk.calc3;   calc3.value = ans3;   if(ans3 <180) calc3.style.backgroundColor = "#D5FFCB";   if(ans3 >=180) calc3.style.backgroundColor = "#FFCC99";   if(ans3 >=270) calc3.style.backgroundColor = "#FF9999"; } //--> </SCRIPT> <FONT SIZE="5"><B>計算</B></font><BR> <FORM name="fk"> <FONT SIZE="3">   ●条件(1):<INPUT size="7" type="text" name="d1" style="text-align:right"><BR>   ●条件(2):<INPUT size="7" type="text" name="d2" style="text-align:right"><BR>   ●条件(3):<SELECT name="s1" id="s1" onchange="b();"> <OPTION value="0.1">A</OPTION> <OPTION value="0.2">B</OPTION> </SELECT> <BR>   ●条件(4):<INPUT size="7" type="text" name="d3" style="text-align:right"><BR>   ●条件(5):<INPUT size="7" type="text" name="d4" style="text-align:right"><BR> <BR>   <INPUT type="button" value="計算開始" onclick="calc()"> <BR> <BR>   ◆回答(1):<INPUT size="7" type="text" name="calc1" style="text-align:right"><BR>   ◆回答(2):<INPUT size="7" type="text" name="calc2" style="text-align:right"><BR>   ◆回答(3):<INPUT size="7" type="text" name="calc3" style="text-align:right"><BR> <BR> </FONT> </FORM> </BODY> </HTML>

  • IEで動作確認もFirefoxで動作しない

    皆さんお世話になってます。Javascript精通していません。 どうぞご指導ください。 ソースは下記になります。Firefox3.0で確認すると何も表示されません。IEだとうまく表示されました。原因を教えていただけますでしょうか? HTML <img src="./images/btn_estimate.gif" onclick="recalculate();"/> [合計]<label id="price"><?= $price ?></label> JavaScript function recalculate() { var total = 0; document.getElementById("price").innerText = ""; if (document.form.design.checked == true) { total = total + 10000; } total = total + document.form.pages.value * 5000; if (document.form.form_func.checked == true) { total = total + 3000; } document.getElementById("price").innerText = total; }

  • Javascriptで自動計算の合計の式でエラー

    度々すみません。 前回こちらで質問させて頂きましたものです。 http://okwave.jp/qa/q8737139.html 教えて頂いた内容を確認してフォームの合計を表示するところまでは出来たのですが、合計する列をひとつ増設した所、D列の合計は教えて頂いた式で合計が無事表示されたのですが、C列の合計が合計ではなく文字の並びが表示されてしまいました。 色々調べてみたのですが、この現象の原因がよくわかりません。 何かエラーがあるのでしょうか。 お知恵を貸して頂けると嬉しいです。 宜しくお願いします。 <スクリプト> <script type='text/javascript'> function keisan(){ var price1 = (document.form1.a1.value) * (document.form1.b1.value) * (document.form1.c1.value); document.form1.金額1.value = price1 ; var price2 = (document.form1.a2.value) * (document.form1.b2.value) * (document.form1.c2.value); document.form1.金額2.value = price2 ; var price3 = (document.form1.a3.value) * (document.form1.b3.value) * (document.form1.c3.value); document.form1.金額3.value = price3 ; document.form1.total.value = price1 + price2 + price3; var f1 = (document.form1.c1.value); document.form1.c1.value = f1 ; var f2 = (document.form1.c2.value); document.form1.c2.value = f2 ; var f3 = (document.form1.c3.value); document.form1.c3.value = f3 ; document.form1.ctotal.value = f1 + f2 + f3; } </script> <HTMLソース> <body> <form method="post" name="form1"> <table width="473" border='1'> <tr> <td align='center'>&nbsp;</td> <td align='center'>A</td> <td align='center'>B</td> <td align='center'>C</td> <td align='center'>D</td> </tr> <tr> <td>1</td> <td><input type='text' name='a1' onchange='keisan()' style='width:50px' /></td> <td><input type='text' name='b1' onchange='keisan()' style='width:50px' /></td> <td><input type='text' name='c1' onchange='keisan()' style='width:25px' /></td> <td><input type='text' name='金額1' style='width:100px' /></td> </tr> <tr> <td>2</td> <td><input type='text' name='a2' onchange='keisan()' style='width:50px' /></td> <td><input type='text' name='b2' onchange='keisan()' style='width:50px' /></td> <td><input type='text' name='c2' onchange='keisan()' style='width:25px' /></td> <td><input type='text' name='金額2' style='width:100px' /></td> </tr> <tr> <td>3</td> <td><input type='text' name='a3' onchange='keisan()' style='width:50px' /></td> <td><input type='text' name='b3' onchange='keisan()' style='width:50px' /></td> <td><input type='text' name='c3' onchange='keisan()' style='width:25px' /></td> <td><input type='text' name='金額3' style='width:100px' /></td> </tr> <tr> <td colspan="3" align='right'>合計</td> <td><input type='text' name='ctotal' style='width:25px' /></td> <td><input type='text' name='total' style='width:100px' /></td> </tr> </table> </form> </body>

  • removeEventListenerの必要性

    参考にしているJavaScriptのソースで下記のような部分があったのですが、 (画面に描画をするプログラムの一部です。動きとしてはマウスの動きに合わせて模様が描かれて残像が残って消えていきます。) j(b)関数の中の一行目でdocument.removeEventListener("mousemove", j, !1); としてmousemoveのイベントリスナーを削除しているのが何故なのか解らず困っています。 メモリリークが発生するとかそういう問題なのでしょうか? ----------------------------------------------------------------------- <script type="text/javascript"> (function() { function j(b) { document.removeEventListener("mousemove", j, !1); document.removeEventListener("touchstart", j, !1); y(b); var g = l - p * 0.5, f = m - q * 0.5, a = Math.sqrt(g * g + f * f), b = l + g / a * 150, a = m + f / a * 150, g = Math.atan2(f, g); g += Math.PI * (0.5 + Math.random() * 0.5) * (Math.random() > 0.5 ? 1 : -1); for (f = 0; f < z; f++) { for (var e = A[f].f, c = 0; c < r; c++) { var d = e[c], h = Math.PI * 0.15 / r * c + g, k = Math.cos(h) * (r - c) * 2, h = Math.sin(h) * (r - c) * 2; d.x = b; d.y = a; d.d = k; d.e = h } j = !1 } document.addEventListener("mousemove", y, !1); document.addEventListener("touchmove", y, !1); document.addEventListener("touchstart", K, !1); setInterval(L, 1E3 / 30) } ------------------------------------------------------------------------- 同じソースの中で window.onload = function(){ ・・・   document.addEventListener("mousemove", j, !1); というようにイベントリスナーに登録しているところは見つかったので、これを削除しているのかとは思うのですが、 何分未熟なもので、それがどういう意図によるものなのか理解できません。 どなたか、知恵を貸して頂けないでしょうか?

  • JavaScript制御のフォームを1ページに複数設置するには?

    先日こちらのサイトで、1つのセレクトボックスで1度に複数の情報をCGIに渡す方法を教えて頂き、 <script type="text/javascript"> <!-- function func() { var n = document.F1.S1.selectedIndex; var d = document.F1.S1.options[n].text.split(" "); document.H1.AA1.value=d[1].slice(0,-1); document.H1.AA2.value=d[0]; document.H1.AA3.value=document.F1.T1.value; document.H1.submit(); } // --> </script> <form name="F1" action="#"> <select name="S1"> <option>3本セット 100円 <option>7本セット 200円 </select> <input type="button" value="カートへ" onclick="func()"> </form> <form name="H1" action="cart.cgi"> <input type="hidden" name="AA1">  ・  ・ <input type="hidden" name="AA3"> </form> というフォームを作ったのですが、同じページに同様のフォームがもう一つ必要になりました。 そこで上記ソースに、フォーム名や変数名を変えたScript <script type="text/javascript"> <!-- function func() { var n = document.F2.S2.selectedIndex; var d = document.F2.S2.options[n].text.split(" "); document.H2.AA4.value=d[1].slice(0,-1); document.H2.AA5.value=d[0]; document.H2.AA6.value=document.F2.T2.value; document.H2.submit(); } // --> </script> を追加し、 これに対応するフォームも追加したのですが、1つめのフォームから「カートへ」でデータを送っても2つめのフォームの内容が送信されてしまいます。 どこをどう直したらよいのでしょうか?

専門家に質問してみよう