テキストフィールドではなくラジオボタンとチェックボックスのみからなるフォームから値を取るJavaScript価格計算機を作ろうとしています。ここに私のJavaScriptのである:JavaScriptで特定の条件がスキップされています
service = 0;
var setPoint = function (elem) {
var $e = $(elem);
var points = $e.attr("data-points");
switch ($e.attr("name")) {
case 'group1':
group1 = parseFloat(points);
case 'group2':
group2 = parseFloat(points);
case 'group4':
group4 = parseFloat(points);
case 'group5':
group5 = parseFloat(points);
case 'services':
if ($(elem).attr('checked1') == 'true') {
$(elem).attr("checked1", "false");
service = parseFloat(service) - parseFloat(points);
} else {
$(elem).attr("checked1", "true");
service = parseFloat(service) + parseFloat(points);
}
}
}
var calculatePoints = function() {
var total;
var values = [group1, group2, group4, group5, service];
values.map(function (value) {
if (value == "" || value == undefined || value == NaN) {
value = 0;
return value;
}
});
if (service == 0) {
window.alert("At least one service needs to be selected!");
console.log("Service = 0");
} else if (service <= 20) {
total = group1 + group2 + group4 + group5 + service;
} else if (service > 20 && service <= 40) {
total = group1 + group2 + group4 + group5 + (service * 0.8);
} else total = group1 + group2 + group4 + group5 + (service * 0.7);
console.log(total * 1000);
return false;
}
しかし、どういうわけか、条件文if (service==0)
はまったく機能していません!
フォームフィールドをクリックするたびにHTMLのonclickメソッドを使用してsetPoints関数を呼び出し、onsubmitを使用してcalculatePoints関数を呼び出します。 onsubmitを使用しているときにページが更新されないことを確認しました。
私のコードに何が間違っているのか、なぜそれが起こっているのか分かりませんので、あなたのソリューションと一緒に説明してくれれば助かります。ここで完全なコードを持つコードペインを見つけることができます。http://codepen.io/anshap1719/pen/pNjepV
は、あなたが本当にあなたが呼び出すと仮定すると、しかし..あなたを助けるために、誰のための十分な情報を与えられていませんでした '設定値は、()'まず、 'services'要素を渡し、その後、' service'は '0'ではありません。あなた自身でこれをデバッグし、論理フローの各段階で 'service'の値を確認する必要があります –
@RoryMcCrossan申し訳ありません私は自分の関数をどのように呼び出すのかを説明するために編集しました。 –
@RoryMcCrossan私は値が0になることはないと知っていますが、私は理由を理解できません。 –