1

HTML と JavaScript で非常に単純な電卓を作ろうとしていますが、それでもうまくいきません

私の質問は次のとおり
です。1. フォームから値を取得し、文字列ではなく数値として設定するにはどうすればよいですか?
2. JavaScript で二次計算を実行するにはどうすればよいですか?
3. HTML コンテンツを JavaScript で更新するにはどうすればよいですか? したがって、入力フォームの値を変更して送信を押すたびに、入力した入力に基づいて結果が変化します。 document.getElementById("idhere").innerHTML=valuehere; を試しました。それでも機能しません。

<script tyle="text/javascript">
function calculateThis(form) {
var userweight=form.weight.value;
var caffeineamount=form.caffein.value;
var caffeinetimes=form.caffeintimes.value;
var totalcaffeine=caffeineamount*caffeinetimes;

// Calculate max caffeine per person
var maxcaffeine=userweight*10;

// Calculate remaining after 24 hours
// Half life = 6 hours
var totalcaffeineafter=totalcaffeine(1/16);

// Calculating how many hours until the caffeine completely digested
var totaldigest=totalcaffeine;
var digesttime=0;

while (totaldigest>0.05) {
totaldigest=totaldigest(1/2);
digesttime++;
}

digesttime=digesttime*6;

// Calculating when the user will probably die of overdose
var countcaffeine=0;
var overdosetime=1;

while (countcaffeine<maxcaffeine){
countcaffeine=countcaffeine+totalcaffeine;
overdosetime++;
}

// Show total amount of caffeine
document.getElementById("showtotalkafein").innerHTML=totalcaffeine;

// Show amount of caffeine after 1 day
document.getElementById("showtotalkafeinsetelah").innerHTML=totalcaffeineafter;

// Show digest time
document.getElementById("showwaktudigest").innerHTML=digesttime;

// Show overdose
document.getElementById("showberapakali").innerHTML=overdosetime;

return false;
}
</script>

<form class="form">
Weight<br />  
<input type="text" name="weight" class="required" value="" /><p /> 
Amount of caffein in coffee<br />
<input type="text" name="caffein" class="required" value="" /><p /> 
How many times drinking coffee in a day<br /> 
<input type="text" name="caffeintimes" class="required" value="" /><p />

<button type="button" onclick="calculateThis(this.form); return false;">Calculate</button></form>

<h1>Result</h1>
<p id="showtotalkafein">Show Caffein Total Here</p> 
<p id="showtotalkafeinsetelah">Show Caffeine Amount After 24 hours</p> 
<p id="showwaktudigest">Show Digest TIme Here</p> 
<p id="showberapakali">Show Overdose Time Here</p>
4

1 に答える 1

1
function calculateThis(form) {
    var userweight = parseInt(form.weight.value, 10);
    var caffeineamount = parseInt(form.caffein.value, 10);
    var caffeinetimes = parseInt(form.caffeintimes.value, 10);
    var totalcaffeine = caffeineamount * caffeinetimes;

    console.log(totalcaffeine)
    // Calculate max caffeine per person
    var maxcaffeine = userweight * 10;

    // Calculate remaining after 24 hours
    // Half life = 6 hours
    var totalcaffeineafter = totalcaffeine * (1 / 16);

    // Calculating how many hours until the caffeine completely digested
    var totaldigest = totalcaffeine;
    var digesttime = 0;

    while (totaldigest > 0.05) {
        totaldigest = totaldigest * (1 / 2);
        digesttime++;
    }

    digesttime = digesttime * 6;

    // Calculating when the user will probably die of overdose
    var countcaffeine = 0;
    var overdosetime = 1;

    while (countcaffeine < maxcaffeine) {
        countcaffeine = countcaffeine + totalcaffeine;
        overdosetime++;
    }

    // Show total amount of caffeine
    document.getElementById("showtotalkafein").innerHTML = totalcaffeine;

    // Show amount of caffeine after 1 day
    document.getElementById("showtotalkafeinsetelah").innerHTML = totalcaffeineafter;

    // Show digest time
    document.getElementById("showwaktudigest").innerHTML = digesttime;

    // Show overdose
    document.getElementById("showberapakali").innerHTML = overdosetime;

    return false;
}

デモ

ノート

ここでは.parseInt()、数値を整数に変換するために使用したものを使用しました。Float に値が必要な場合は、.parseFloat()` を使用します。


コードの問題

  • form.weight.valueform.caffein.value...値を文字列として与えるため、数値(整数/浮動小数点)に変換する必要があります。

  • totalcaffeine(1 / 16)andを使用しましたが、javascript の有効な数学演算ではありtotaldigest = totaldigest(1 / 2);ません。totalcaffeine * (1 / 16)totaldigest = totaldigest * (1 / 2);


あなたのコメントによると

.parseInt(form.caffeintimes.value, 10)、する?

の形式parseIntは次のとおりです。

.parseInt(valueToConvert, [radix]).

したがって、文字列を 10 進整数に.parseInt(form.caffeintimes.value, 10)変換します。form.caffeintimes.value


関連参照:

.parseInt()

.parseFloat()

于 2012-06-09T17:12:27.540 に答える