2014-11-19 2 views
0

전송 방법에 따라 필요한 총 시간을 얻는 데 문제가 있습니다.함수 내에서 변수를 통합하십시오.

이것은 코딩에 익숙해 진 수업의 첫 번째 코드입니다.

자바 스크립트 :

$(document).ready(function() { 

$('#calculateTotal').click(function() { 


var a = ($('#car').val()) ? parseInt($('#car').val()) : 0; 

var c = ($('#bus').val()) ? parseInt($('#bus').val()) : 0; 


document.getElementById("qr1").onclick = function() { 
    if (this.checked) { 
     var b = 1; 
    } 
    else { 
     b = 0; 
    } 
}; 

var totalTime = a+b+c; 

$('#total').html(totalTime); 


}); 

}); 

VAR B는 내가 계산 총 클릭 변수로 인식되지 않습니다. 누구든지 코딩에서 의미가있는 방식으로 var b를 선언하는 방법을 보여줄 수 있습니까?

감사합니다.

+0

* 1. * 다른 클릭 핸들러 내에 클릭 핸들러를 정의하지 마십시오. * 2. * 당신이 정의하고있는'qr1' 클릭 핸들러에 대한 콜백 내에서만 * 3. * b를 사용할 수 있으므로 그 함수 밖에서는 사용할 수 없습니다. 해결책 : 전역 변수로 정의하거나 콜백 함수 등에서이를 반환하십시오. –

+0

'b'는 범위에서 로컬로 정의됩니다. 전 세계적으로 존재하지는 않습니다. –

+0

변수 b를 parseInt 할 필요가 있습니다. var totalTime = a + parseInt (b) + c –

답변

1

"b"는 함수 안에 선언하고 있습니다.

작성한 함수 외부에서 전역으로 액세스 할 수 있기를 원하기 때문에 첫 번째 문에서 앞에있는 var을 제거하십시오.

document.getElementById("qr1").onclick = function() { 
    if (this.checked) { 
     b = 1; 
    } 
    else { 
     b = 0; 
    } 
}; 

대안은 0

B = 0으로하는 기능 이외의 (B)를 설정할 수있다; 옆으로, 세계의 일반적으로 눈살을 찌푸리게되면서

document.getElementById("qr1").onclick = function() { 
    if (this.checked) { 
     b = 1; 
    } 
}; 

(나는 그들을 많이 사용한다) 그래서 당신은 모든 것을 수용 할 수있는 개체를 만들 수 있습니다. 이런 식으로 당신은 멋지고 깔끔합니다.

또한 설명에서 언급했듯이 qr1 클릭 핸들러는 calculate total 함수 외부에 있어야합니다.

+0

명확하고 간결합니다. 당신의 도움을 주셔서 대단히 감사합니다. –

관련 문제