-1

私はこれに数時間取り組んできましたが、一生これを行う方法を理解することはできません。

そこで、java-script(HTMLの裏)で計算したいと思いました。そして、ラジオボタンでいくつかの変数の値をチャンスにするにはどうすればよいか疑問に思っていました。EG (女性のラジオ ボタンがオンの場合、var a = 10、var x = 20 など...、男性のラジオ ボタンがオンの場合、var a = 34、var x = 32 など...)

また、これに加えて、たとえば (bmr = a + (x * weight) + (y * height) - (z * age)) のような長い合計ができるかどうかを知りたかったのです。最後に、このすべての情報を別のテキスト フィールドに表示します。

HTML

<!DOCTYPE html PUBLIC>
<html>

    <head>
        <meta http-equiv="Content-Type" content="text/html;         charset=utf-8" />
        <title>Untitled Document</title>
        <SCRIPT type="text/javascript" src="jstest.js">

        </SCRIPT>
    </head>

    <body>
        <form action="" method="post" name="caloriecalc">
            <table>
                <tr>
                    <td>Age:</td>
                    <td>
                        <input type="text" name="age" size="5" />
                    </td>
                </tr>
                <tr>
                    <td>Gender:</td>
                    <td>
                        <label>
                            <input type="radio" name="gender" value="male" />Male</label>
                        <br />
                        <label>
                            <input type="radio" name="gender" value="female" />Female</label>
                        <br />
                    </td>
                </tr>
                <tr>
                    <td>Weight:</td>
                    <td>
                        <input type="text" name="weight" size="7" />KG</td>
                </tr>
                <tr>
                    <td>Height:</td>
                    <td>
                        <input type="text" name="height" size="7" />CM</td>
                </tr>
                <tr>
                    <td>
                        <label>Exercise Level:</label>
                    </td>
                    <td>
                        <select name="activity">
                            <option value="1.2">Sedentary (little or no exercise)</option>
                            <option value="1.375">Lightly active (exercise/sports 1-3 days/wk</option>
                            <option value="1.55">Mod. active (exercise/sports 3-5 days/wk)</option>
                            <option value="1.725">Very active (exercise/sports 6-7 days/wk)</option>
                            <option value="1.9">Extr. Active (daily exercise/sports & physical job))</option>
                        </select>
                    </td>
                </tr>
                <tr>
                    <td></td>
                    <td>
                        <input name="calc" type="button" value="Calculate" onclick="validate()" />
                    </td>
                </tr>
                <tr>
            </table>
        </form>
        <table width="100%">
            <tr>
                <td width="50%" align="right">BMR</td>
                <td width="50%" id="bmr"></td>
            </tr>
        </table>
    </body>

</html>

ジャバスクリプト

function validate() {
    var age = document.caloriecalc.age.value;
    var weight = document.caloriecalc.weight.value;
    var height = document.caloriecalc.height.value;

    if (age <= 0 || parseInt(age) != age) {
        alert("Please enter a valid age.");
    } else if (weight <= 0 || isNaN(Number(weight))) {
        alert("Please enter a valid weight.");
    } else if (height <= 0 || isNaN(Number(height))) {
        alert("Please enter a valid height.");

    } else { //all the data has been validated
        calculate(parseInt(age), parseFloat(weight), parseFloat(height));
    }
}

function calculate(age, weight, height) {

}
4

2 に答える 2

1

次のようなものを試してください

function validate() {
    var i , gender;
    var age = document.caloriecalc.age.value;
    var weight = document.caloriecalc.weight.value;
    var height = document.caloriecalc.height.value;

    for(i = 0; i < document.caloriecalc.gender.length; i++){
        if(document.caloriecalc.gender[i].checked){
            gender = document.caloriecalc.gender[i].value;
        }
    }

    if (age <= 0 || parseInt(age) != age) {
        alert("Please enter a valid age.");
    } else if (!gender) {
        alert("Please enter a valid gender.");
    } else if (weight <= 0 || isNaN(Number(weight))) {
        alert("Please enter a valid weight.");
    } else if (height <= 0 || isNaN(Number(height))) {
        alert("Please enter a valid height.");
    } else { //all the data has been validated
        calculate(parseInt(age), parseFloat(weight), parseFloat(height), gender);
    }
}

function calculate(age, weight, height, gender) {
    var a, x, y = 1, z = 1;
    switch(gender){
        case "male":
            a= 34;
            x =32;
            break;
        case "female":
            a= 10;
            x =20;
            break;
    }

    var bmr = a + (x * weight) + (y * height) - (z * age);
    document.getElementById('bmr').innerHTML = bmr;
}

デモ:フィドル

注:あなたがそれらについて言及していないので、私はyandの値を知りませんz

于 2013-05-16T03:05:17.670 に答える
0

次を使用してラジオボタンの値を取得できます:-

 var lengthh=document.caloriecalc.gender.length;
 for(var i=0;i<lengthh;i++){
        if(document.caloriecalc.gender[i].checked){
            gender = document.caloriecalc.gender[i].value;
        }
    }

関数を計算するために値を渡し、以下のように計算します:-

function calculate(age, weight, height, gender) {
    var a=0, x=0, y = 1, z = 1;
    if(gender=='male'){        
            a= 34;
            x =32;
           }else{
            a= 10;
            x =20;            
           }

    //Now the result is
    var resultt = a + (x * weight) + (y * height) - (z * age);
    document.getElementById('bmr').innerHTML = resultt;

}

それがあなたを助けることを願っています。

于 2013-05-16T03:13:54.483 に答える