텍스트 필드가 아닌 라디오 버튼과 체크 박스만으로 구성된 양식에서 값을 취하는 자바 스크립트 가격 계산기를 만들려고합니다.특정 조건이 자바 스크립트에서 건너 뛰었습니다.
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을 사용할 때 페이지가 새로 고쳐지지 않도록했습니다.
내 코드에 어떤 문제가 있는지, 왜 그런 일이 발생하는지 알지 못해서 솔루션과 함께 설명하면 도움이 될 것입니다. 여기에 전체 코드가 포함 된 코드 en을 찾을 수 있습니다. http://codepen.io/anshap1719/pen/pNjepV
당신은 실제로 당신을 도울 수있는 충분한 정보를 제공하지 못했습니다. 그러나'setPoint() '를 먼저 호출하고'services' 요소를 전달하면'service'는'0'이되지 않습니다. 당신 자신을 디버그하고 논리 흐름의 각 단계에서'service'의 값을 확인해야합니다. –
@RoryMcCrossan 죄송합니다. 방금 내가 어떻게 함수를 호출하는지 설명하도록 수정했습니다. –
@RoryMcCrossan 그 가치가 0이 아니라는 것을 안다.하지만 나는 왜 이해할 수 없다. –