2011-08-25 8 views
0

parseInt()를 사용할 때 자바 스크립트 오류 "잘못된 인수"가 표시됩니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?parseInt() 오류 : 잘못된 인수

기능은 1

<script> 
    var sizeCounter = 1; 
    function changeFontSize(){ 
     //var elements = parent.main.document.getElementsByTagName 
     var myElements = parent.main.document.getElementsByTagName('*') 

     for (i=0;i<myElements.length;i++){ 
       if(myElements[i].style.fontSize != null){  
         var elmFontSize = myElements[i].style.fontSize + ""; 
         elmFontSize.replace("px",""); 

         if(elmFontSize != "") { 
          var elmFontSizeNum = parseInt(elmFontSize); 

         } 
          var resultSize = elmFontSizeNum + sizeCounter; 

          myElements[i].style.fontSize = resultSize + "px"; 


         //alert(myElements[i].className) 
        } 
        sizeCounter++; 
      } 
    } 


</script> 
+0

참조하면'에서는 parseInt()'를 호출하기 전에'elmFontSize'의 가치를 확인 했 : getStyle

function changeFontSize(sizeCounter){ sizeCounter = sizeCounter || 1; var myElements = document.getElementsByTagName('*'), currentFontSize = 0; for (i=0;i<myElements.length;i++){ var fsNow = getStyle(myElements[i],'font-size'); if (fsNow){ currentFontSize = Number(fsNow.replace(/[^\d]/g,'')); myElements[i].style.fontSize = (currentFontSize + sizeCounter) + 'px'; } } } 

? 'console.log (elmFontSize)'를 시도하십시오. – Chris

+0

이것은 문제와 관련이 없을 수 있지만'replace'를 사용할 때 결과를 아무것도 설정하지 않습니다 :'elmFontSize = elmFontSize.replace ("px", "");'를 사용해야합니다. 'elmFontSize.replace ("px", "");'대신에. –

+0

** elmFontSize ** 경고를하기 전에 parseInt를 실행하고 값을 확인하십시오. – mithunsatheesh

답변

1

많은 문제가 있습니다. 여기에/다시 작성하여 기능을 단순화에 대한 제안입니다 :

function getStyle(el,styleProp) 
{ 
    el = /string/i.test(typeof el) ? document.getElementById(el) : el; 
    if (!el){return null;} 
    var result; 
    if (el.currentStyle){ 
    return el.currentStyle[styleProp]; 
    } 
    else if (window.getComputedStyle){ 
    return document.defaultView.getComputedStyle(el,null) 
      .getPropertyValue(styleProp); 
    } 
    return null; 
} 

this jsfiddle

+0

덕분에 그것을 구현하고 다시 당신에게 – code511788465541441

+0

가 작동하지 않습니다보십시오. fsNow는 항상 "정의되지 않음"입니다. 내 웹 페이지의 글꼴 크기가 명시 적으로 CSS 클래스를 사용하도록 설정되어 있지 않기 때문입니다. style.fontSize는 모든 요소에 대해 빈 문자열을 반환합니다. – code511788465541441

+0

제대로 작동합니다. 다음은 객체에 캡슐화 된 동일한 함수를 사용하는 jsfiddle입니다. 이번에는 html 요소에 명시적인 글꼴 크기가 없습니다. 버튼을 클릭하면 @ http://jsfiddle.net/aCqVZ/ – KooiInc

0

parseInt가 첫 번째 매개 변수로 문자열을 사용하여 프레임에 모든 요소의 글꼴 크기를 증가시키는 것이다, 당신은 elmFontSize이 typeof(elmFontSize)를 사용하여 문자열이 실제로 있는지 확인 할 수 있습니다. 문자열이 아닌 경우 parseInt 함수를 호출하기 전에 문자열로 변환 할 수 있습니다.

0

"px"만 처리하고 fontsize는 반드시 "px"값일 필요는 없습니다. 예를 들어 "em"이면, 숫자가 아닌 값을 변환하려고하기 때문에 parseInt가 실패합니다.

+1

그건 맞지 않아. 'parseInt'는 내가 액세스 할 수있는 모든 브라우저 (Chrome, Safari, FF)에서'20em'과 같은 문자열을 처리 할 수 ​​있습니다. –

+0

올바른 매트입니다. parseInt가 처리합니다. – Karlth