0

私は小さなJavaScriptフォームを持っています

<div id="calculator-text"><h2>Tape calculator - based on cable size 1 mm to 28 mm, with 15% overlap</h2></div>

<form name="form1" method="post" action="">

<div id="calcformlabel"><label for="val2">Enter your cable size</label> (in mm)</div>
<div id="calcformtext1"><input type="text" name="val2" id="val2"></div>

<div id="calcformbutton"><input type="button" name="calculate" id="calculate" value="Calculate"></div>

<div id="calcformresult">The tape size you require is:- <span id="result1" class="maintext1"></span> (mm)</div>


</form>
<script type="text/javascript">
var btn = document.getElementById('calculate');
btn.onclick = function() {
    // get the input values
    var val2 = parseInt(document.getElementById('val2').value);

    // get the elements to hold the results
    var result1 = document.getElementById('result1');

    // create an empty array to hold error messages
    var msg = [];
    // check each input value, and add an error message
    // to the array if it's not a number
    if (isNaN(val2)) {
        msg.push('<span class="maintext1">Enter your cable size</span>');
    }
    // if the array contains any values, display the error message(s)
    // as a comma-separated string in the first <span> element
    if (msg.length > 0) {
        result1.innerHTML = msg.join(', ');
    } else {
        // otherwise display the results in the <span> elements
        result1.innerHTML = val2 * 3.142 * 1.15;
    }
};
</script>

基本的にこれは簡単な計算です

a)これを小数点以下2桁に出力するにはどうすればよいですか(そして、-.5 =切り捨てと+.5 =切り上げに応じて明らかに切り上げまたは切り捨て)

b)画像の入力タイプボタンを置き換えます(私は明らかなコードと>input type = image>を試しました。基本的にこれらは実際に機能しますが、実際の結果を表示する代わりに、一瞬で結果を表示してからページをリロードします再び空白のフォームで...

これに関する助けがあれば大歓迎です

前もって感謝します

4

3 に答える 3

1

あなたの質問の一部について

JavaScriptを特定の精度に丸めることができます

リンク :JavaScript での数値の丸め

var original=28.453

1) //round "original" to two decimals
var result=Math.round(original*100)/100  //returns 28.45


2) // round "original" to 1 decimal
var result=Math.round(original*10)/10  //returns 28.5


3) //round 8.111111 to 3 decimals
var result=Math.round(8.111111*1000)/1000  //returns 8.111
于 2012-06-04T06:56:20.553 に答える
1

この.toFixed()方法では、小数点以下n桁に丸めることができるため、次のようになります。

result1.innerHTML = (val2 * 3.142 * 1.15).toFixed(2);

画像で発生している問題は、画像を送信ボタン<input type="image">として定義していることだと思います。おそらく、タグではなく標準の画像を含めるだけです。を指定した場合でも、既存の JS で動作するはずです。<img><input type="image">id='calculate'

または、タイプを指定できるように、img 要素を含むボタン要素を使用することもできます (送信されないように)。

<button type="button" id="calculate"><img src="yourimage"></button>

(サーバーに何も送信したくないように見えるので、この機能にフォームがまったく必要かどうかはわかりません。)

于 2012-06-04T07:01:15.657 に答える
0

ボタンを画像に交換するには、ボタン <input> を次のコードに置き換えます。

<img src="http://www.raiseakitten.com/wp-content/uploads/2012/03/kitten.jpg" name="calculate" id="calculate" value="Calculate" onclick="document.forms['form1'].submit();" />

フォームに画像と送信機能を追加します。

小数点以下 2 桁に丸めるには、次の関数を使用します。

function twoDP(x){
     return Math.round(x*100)/100
}

次のように使用します。

twoDP(100/3)   //returns 33.33

Math.PI を使用することも関連している可能性があります

var result = val2 * Math.PI * 1.15 ;
于 2012-06-04T07:03:07.157 に答える