0

年齢と婚姻状況に応じて特定の保険区分にユーザーを分類する簡単な JavaScript プログラムを作成します。次のプログラムは機能しますが、プログラムをテストすると、プログラムでクラス 3 とクラス 4 の保険を正しく区別できません。私はjavascriptにかなり慣れていないので、ばかげたことがあればすみません。

<html xmlns="http://www.w3.org/1999/xhtml">
<head>

       <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title> Insurance Program </title>

<script type = "text/javascript">

function insurance(form)
{

var fname = form.firstname.value;
var sname = form.surname.value;
var age = form.age.value;
var insurance;

var marital = form.maritalstatus.value;

document.write(marital);

if (marital = 2 && age >= 30)
{
insurance = "Grade 1";
}

else if (marital = 1 && age > 30)
{
insurance = "Grade 2";
}

else if (marital = 2 && age < 30)
{
insurance = "Grade 3";
}

else if (marital = 1 && age < 30)
{
insurance = "Grade 4";
}

document.write("Thank you " + fname + " " + sname + "<br>");
document.write("You belong to " + insurance + " Insurance");

}

</script>


</head>

<body>

<h4> Insurance Program </h4>

<form>
Enter your first-name : <input type = "text" name="firstname"> 
Enter your surname : <input type = "text" name="surname"> <br>
Enter your age: <input type = "text" name="age"> <br>
Select your current marital status
<Select id ="maritalstatus" name = "maritalstatus">
<option value = "1"> Single </option>
<option value = "2"> Married </option>
</Select>


<input type = "submit" value = "submit" onclick="insurance(this.form)">
</form>


</body>
</html>
4

4 に答える 4

3

1 つには、使用=すべきときに使用してい===ます。例:

if (martial === 2 && age >= 30)

martial = 2そしてmartial = 1常に真になるので、最後の 2 つの else if は同じです。

参照:=代入演算子で、=====比較演算子です。

JSFiddle :

if (parseInt(marital, 10) === 2 && parseInt(age, 10) >= 30) {
    ins = "Grade 1";
}
else if (parseInt(marital, 10) === 1 && parseInt(age, 10) >= 30) {
    ins = "Grade 2";
}
else if (parseInt(marital, 10) === 2 && parseInt(age, 10) < 30) {
    ins = "Grade 3";
}
else if (parseInt(marital, 10) === 1 && parseInt(age, 10) < 30) {
    ins = "Grade 4";
}
于 2012-11-21T19:55:32.807 に答える
2

あなたの問題は、次のようなすべての行にあります。

martial = 1 && ...

marital = 1に設定marital1ます。と比較 maritalしたい1ので、二重等号を使用します。

martial == 1 && ...
于 2012-11-21T19:56:04.977 に答える
0

=オペランドでシンボルを誤用しましたif。値を比較する必要がある場合は、==or with ===(厳密な型チェック用) を使用します。

于 2012-11-21T19:56:26.607 に答える
0

条件に「==」が必要です

武道 = 2 && 年齢 >= 30

武術 == 2 && 年齢 >= 30

= は代入演算子で、== は比較だからです。

于 2012-11-21T19:57:28.547 に答える