2012-09-01 3 views
1

경계 상자 상자 모델의 브라우저 간 사용을 허용하는 작은 스 니펫을 작성하는 중입니다. 지금까지 기본 기능은 정상적으로 작동하지만 여유를 얻을 수는 없습니다. 사용할 수있는 공간에 적응해야하지만 콘솔은 NaN을 반환하며 어디에서 오는지 알지 못합니다.border-left-width는 jQuery에서 NaN을 반환합니다.

Here은 바이올린입니다.

console.log는 아무 것도 기록하지 않으며 그 이유를 모르겠습니다. 어떤 도움이라도 대단히 감사합니다.

+0

'에서는 parseInt ($ (이) .CSS ("국경 왼쪽 폭"), 10)', 코드는'console.log'에 도달하지 않는다 전에 문자열 곱셈 때문에. –

답변

4

당신은이 패턴을 가지고있다. 그것은 제거하거나

($(this).css("border-left-width").replace("px", "") * 2) 
자동 형 변환을 통해 작동

또는 정수로 문자열을 구문 분석

(parseInt($(this).css("border-left-width"), 10) * 2) 

, 있어야 px 후행 : parseInt가 문자를 발견

경우 그 의 기수가 아니며 기수와 그 이후의 모든 문자를 무시하고 은 정수 값을 반환합니다. 그 시점까지 파싱되었습니다. parseInt 숫자를 정수 값으로 절단합니다. 선행 및 후행 공백은 허용됩니다.

Fiddle

parseInt reference

+0

이것은 참으로 작동합니다, 감사합니다! –

0

이 때문에 :

$(this).css("padding-left") 

$(this).css("border-left-width") 

당신이 NaN의 결과로, 2에 거는 시도 "픽셀"을 포함하는 문자열을 반환합니다. 다음과 같이 결과 문자열을 곱하기 전에 결과를 구문 분석하여이 문제를 해결할 수 있습니다.

(parseFloat($(this).css("padding-left")) * 2) 

희망이 있습니다. 당신은 px구문 오류가 발생 곱셈을 실행 후 삭제하려는

($(this).css("border-left-width") * 2).replace("px", "") 

: 당신의 바이올린의 많은 지역에서

+0

기술적으로 문자열에있는 "px"가 NaN으로 나타나며 parseFloat는이를 무시합니다. – Neil

+0

예, 숫자가 아닌 문자가 나올 때까지 모든 숫자를 구문 분석합니다. 그러나 그것은 여전히 ​​문제를 해결합니다. – Logard

관련 문제