• ベストアンサー

ブラウザ上のテキストボックスから数値を受け取って別のテキストボックスに計算結果を返す

超初心者です。 Cの勉強をしていたのですが、javascriptにも手を出してみました。 変数の考え方が違うせいか、理解が間違っているのか・・・ ブラウザ上でテキストボックスに数値を記入して、別なテキストボックスに計算結果を返すソースを考えていました。 以下のような感じです。 HTML ------------------------ <form> 林檎 100円 * <input type=text name=txt7>個  <input type=button value="計算" onClick="func4(txt7)"><br> 合計金額は<input type=text name=txt8>円になります。 </form> ------------------------- JS ------------------------ function func4(keisan){ document.form2.txt8.value=keisan*100; } ------------------------ 上記のように変数を使うとエラーになります。「NaN」が返ってきます。 変数を使用せずに、直接受け取る値を計算すれば出来たのですが・・・ ブラウザからなにかを入力させ、それを変数に代入した場合は数値(INT)型にはならないのでしょうか?? 詳しい方、解説をお願いします・・・

  • 1minn
  • お礼率84% (49/58)

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

> ~value="計算" onClick="func4(txt7)" これだと、func4に"txt7"という変数(おそらく未定義)を渡すという 意味になります。以下のように記述してください。 onClick="func4(document.getElementsByName('txt7')[0]))" あるいは"func4(document.form.txt7)" > document.form2.txt8.value=keisan*100; 引数の keisan はテキストボックというオブジェクトなので、計算 できません。(数値じゃない!) また、テキストボックスの中身は何でしょう?文字列ですね。 数字しか書いてなくても文字列です。だから 4 + 5 は "45"のように 文字連結になってしまいます。掲題のように乗算など不可能です。 先ず、中身を得るためvalueプロパティを参照しましょう。 また、これを数値化するためparseIntやparseFloatを使います。 document.form2.txt8.value=parseInt(keisan.value)*100; または document.form2.txt8.value=parseFloat(keisan.value)*100;

1minn
質問者

お礼

回答ありがとうございます。 テキストボックスに入力されたデータだけを受け取っていると思い込んでいました。 「オブジェクトそのものを受け取っている」という考え方でよいのでしょうか? とりあえず parseInt oarseFloatは初めてみたので、ひとまずこれを覚えてからもう一度挑戦します。

その他の回答 (1)

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

まぁせっかくだからthisをつかってオブジェクト渡しの方が いいでしょう <script> function func4(obj){ var f=obj.form;f.elements["txt8"].value=parseInt(f.elements["txt7"].value)*100; } </script> <form> 林檎 100円 * <input type="text" name="txt7">個  <input type=button value="計算" onClick="func4(this)"><br> 合計金額は<input type="text" name="txt8">円になります。 </form>

関連するQ&A

  • セレクトボックスを使った計算式

    テキストボックスに文字を入力してセレクトボックスで四則計算 をプルダウンメニューで選択し、3つ目のテキストボックスに 計算結果を表示するにはどのようにしたらよいのでしょうか? とりあえず途中まで作ってみました。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>スクリプト練習</title> <script type="text/javascript"> <!-- function keisan(){     if(option value="+"){     document.f1.t3.value(document.f1.t1.value + document.f1.t2.value); } } //--> </script> </head> <body> <form name="f1"> <input type="text" size="5" name="t1"> <select name="color2"> <option value="+">+</option> <option value="-">-</option> <option value="×">×</option> <option value="÷">÷</option> </select> <input type="text" size="5" name="t2"> <input type="button" value="=" onClick="keisan()"> <input type="text" size="5" name="t3"> </form> </body> </html> if文を作るところが特にわからず止まっています。 どうかよろしくお願いします。

  • テキストボックスに初期値を入れる

    <form> <input type= "text" name ="forward" value = "$a[0]"> </form> $a[0]には整数が入っています。 上記テキストボックスに変数$a[0]の値を入れたいのですが上記プログラムではうまくいきませんでした。どうすればテキストボックスの初期値に&a[0]の中身が入るようになるのでしょうか?お願いいたします。

    • ベストアンサー
    • PHP
  • 計算結果のテキスト表示

    JavaScript計算式で結果を表示したいのですが できません。 テキストBOXには結果を入れれるのですが、 テキストBOXでなく文字として結果を出したいのですが でません。 以下ソースです。 19行目が表示希望箇所です。 <SCRIPT language="javascript"> <!-- function calc() { with(document.f) { syoukei.value = goods1.value * goods2.value * (goods3.value * 0.01) ; syoukei.value = Math.round(syoukei.value) } } // --> </SCRIPT> <FORM name="f"> 縦<INPUT type="text" name="goods1" size="3" onChange="calc();">m * 横<INPUT type="text" name="goods2" size="3" onChange="calc();">m * 厚み<INPUT type="text" name="goods3" size="3" onChange="calc();">cm<BR>       60L <INPUT type="text" name="syoukei" size="5">袋<BR> <SCRIPT language="javascript"> <!-- document.write(syoukei); } // --> </SCRIPT> </FORM>

  • テキストボックスの背景色について

    <html> <body> <form name="form1"> <input type="text" value="よろしく" name="text1"> <script language="javascript"> document.form1.text1.style.background-color = "green"; </script> </form> </body> </html> これはテキストボックスの背景色をグリーンにするプログラムなんですがうまくいきません。どこが間違っているのか指摘してください。

  • 計算結果がおかしい

    計算結果がおかしい <form name="form1"> <h2>消費税計算</h2> <p>本体金額&nbsp;<input type="text" value="0" class="right" name="text4">円</p> <p>消費税率&nbsp;<input type="text" value="0" class="right" name="text5">%</p> <p>税込金額&nbsp;<input type="text" value="0" class="right" name="text6" onFocus="zei()">円</p> </form> htmlで上記のようなテキストフィールドを3つ作成し、それぞれ上から順に [text4~text6]の名前をつけています。 本体金額(text4)と消費税率(text5)に入力された値をもとに、 text6に税込金額を表示するように以下の関数をjavascriptで<head>タグ間に記述しました。 <script type="text/javascript"> <!-- function zei(){ document.form1.text6.value=document.form1.text4.value*(1+document.form1.text5.value/100); } //--> </script> 実際に値を入力してみると、計算結果が正常な場合とそうでない場合があります。 例えば、本体金額のボックスに500、消費税率の欄に10と入力すると、550と表示され 問題はないのですが、本体金額を200に変更すると 「220.00000000000003」と表示されます。 小数点以下を切り捨てれば済む話ですが・・・・・ 計算結果が違っているのが気になります。 これは何故なのでしょう? 原因がおわかりの方がおられましたら、ご教示ください。 どうか宜しくお願いいたします。

  • ボタンを押すとテキストボックスが増えるJavaScriptについて教えてください

    Javascriptで質問です。 <input type="text" name="hoge1" value=""> <input type="text" name="hoge2" value=""> <input type="text" name="hoge3" value=""> というようなテキストボックスがあり、「追加」というボタンを押すと 新たなテキストボックス <input type="text" name="hoge4" value=""> が追加されるようなJavascriptを作成したいと考えています。 新たに作られたテキストボックスには name="hoge4" name="hoge5" ・ ・ ・ というように、nameの部分に「hogeの右にある番号に1ずつ加算された名前」を付けていきたいのです。 検索すると、テキストボックスを追加していくだけのサンプルはいくつかあったのですが、nameの部分を加算していく、という例が無くて行き詰っています。 よろしくお願いいたします。

  • 数値計算で謎

    シンプルな修正ユリウス日を求めるプログラムです。試しに2004年1月1日を求めると、誤った値「6640249」が出力されます。試行錯誤の結果、functionの中身、uに数値を代入する文(原文では改行されていません)で、dをMath.floor(d)に変えると正しい値「53005」が出力されました。この理由が全くわかりません。また、6640249はどのように計算された値でしょうか?ブラウザはIE6とLunascape2を使用です。 <html> <head> <title>myJulianday</title> <script type="text/JavaScript"> <!-- function myFuncJulianday(){ y=document.form1.input1.value; m=document.form1.input2.value; d=document.form1.input3.value; if(m==1){ m=13; y=y-1; } if(m==2){ m=14; y=y-1; } u=Math.floor(365.25*y)+Math.floor(y/400)-Math.floor(y/100)+Math.floor(30.59*(m-2))+d-678912; document.form1.input4.value=u; } //--> </script> </head> <body> <form type="text" name="form1"> <input type="text" name="input1" size="10">年 <input type="text" name="input2" size="10">月 <input type="text" name="input3" size="10">日 <input type="button" size="20" value="ユリウス日を表示" onClick="myFuncJulianday()"> <input type="text" name="input4" size="10"> </form> </body> </html>

  • テキストボックスが何番目かを検出したい

    <FORM> <INPUT type="text" name="S1"> <INPUT type="text" name="S2"> <INPUT type="text" name="S3"> <INPUT type="text" name="S4"> <INPUT type="text" name="S5"> </FORM> 上記ソースでオンフォーカスのテキストボックスが何番目かを検出したいのですがJavaScriptで可能でしょうか?

  • テキストボックス 追加

    最初5つのテキストボックスを表示して追加ボタンを押して、6個目から15個目を追加しようとしています。name="tb1" からname="tb15"までを設定したいです。15個になった際にボタンを押せなくしたいです。入力された情報をPHP側で処理しようとしています。 以下のソースを改良しようとしているのですが、うまくいきません。 どのようにしたらいいでしょうか? <script language="JavaScript"> <!-- function add(){ document.all.AddArea.innerHTML = document.all.AddArea.innerHTML + "<br><input type=\"text\" name=\"Txt_Object\">"; } // --> </script> </head> <body> <form id="f1"> <div id="AddArea"> <input type="text" name="Txt_Object"> </div> <input type="button" value="追加" onClick="add()"> </form> </body> </html>

  • テキストボックスに関して質問です

    ページ間でのテキストボックスからテキストボックスへの文章の移行って可能でしょうか? tezt1.htmlってページにある 名前⇒<INPUT TYPE="text" NAME="name1"> 住所⇒<INPUT TYPE="text" NAME="adres1"> のテキストボックスに入力された文章を 入力ボタン <INPUT type="button" value="入力" onClick="・・・・・"> を押すと、下に用意してあるテキストボックス(別ページ)に入力した値が入るようにしたいのです。 tezt2.htmlの 名前⇒<INPUT TYPE="text" NAME="name2"> 住所⇒<INPUT TYPE="text" NAME="adres2"> 事情が有り一つのページで行えません。 フレームわけしたページで移行して使用したいのですが… 質問し方が悪くて大変申し訳有りません。宜しくお願いします。

    • ベストアンサー
    • HTML

専門家に質問してみよう