1

目的: この js のチャンクは、フォームのフィールドに入力された値を取得し、それらを変数に割り当ててから、そのページのフィールドに出力する計算を実行するように設計されています。

変数のいずれかが未定義または空の場合、出力が不明として設定されることを意味する短い関数があります。

私のコード:

function calculate() {
    var $u5pop = $('input[name=sv_21d]').val();
    var $sam = $('input[name=sv_25d]').val();
    var $incidence = $('input[name=sv_313]').val();
    var $treated = $('input[name=sv_312]').val();


    if ($u5pop == undefined ||$u5pop == '') {
        $u5pop = 0;
    }
    else {
        $u5pop = parseFloat($u5pop);
    }

    if ($sam == undefined ||$sam == '') {
        $sam = 0;
    }
    else {
        $sam = parseFloat($sam);
    }

    if ($incidence == undefined || $incidence == '') {
        $incidence = 0;
    }
    else {
        $incidence = parseFloat($incidence);
    }
    //
    if ($treated == undefined || $treated == '') {
        $treated = 0;
    }
    else {
        $treated = parseFloat($treated);
    }

    var $determined = $u5pop / $incidence * $treated * $sam;

    if ($determined == undefined || $determined == '') {
        $determinedOut = 'Unknown';
    }
    else {
        $determinedOut = parseFloat($determined);
    }

    $('#calculation').attr('value', $determinedOut.toFixed(2));
}

出力フィールド div #calculation は次のとおりです。

<input size="18" class="calculation" id="calculation" value="Click to calculate" onfocus="calculate()"/>

ユーザーがフィールド内をクリックすると、計算が実行されます。

これは構造/構文の問題だと思いますが、すべてがうまくいくようです。より経験豊富な目を持つ人は、ここで私がどこで間違っているかを見ることができますか? 現在: 何も起こりません (デフォルト値のままです)。

どうもありがとう!

編集:これは、すべてのフィールドが入力されている限り完全に機能しますが、フィールドが空のままで関数が onfocus によって呼び出された場合、「不明」を出力することはできません。

4

2 に答える 2

3

このjsFiddleを参照してください。JS関数をHTMLの上に移動するまで、コードは最初に入力値を変更できませんでした。おそらくそれがあなたの問題です!?

于 2012-10-07T18:04:47.027 に答える
0

他の答えでjsFiddleを見てください。$u5popOR $samOR$treatedが0に変更された場合、結果は得られません

が0に変更された場合$incidence、答えは無限大です。(ゼロ除算)

デフォルトは=1である必要がありますNOT=0

if ($u5pop == undefined ||$u5pop == '') {
    $u5pop = 1;
}
else {
    $u5pop = parseFloat($u5pop);
}

if ($sam == undefined ||$sam == '') {
    $sam = 1;
}
else {
    $sam = parseFloat($sam);
}

if ($incidence == undefined || $incidence == '') {
    $incidence = 1;
}
else {
    $incidence = parseFloat($incidence);
}
//
if ($treated == undefined || $treated == '') {
    $treated = 1;
}
于 2012-10-07T18:22:06.073 に答える