2011-08-25 117 views
0

当我使用parseInt()时,我得到一个javascript错误“invalid arguement”。我究竟做错了什么?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'的价值?尝试'console.log(elmFontSize)'。 – Chris

+0

这可能与问题没有关系,但是当你使用'replace'时,你不会将结果设置为任何东西:你需要使用'elmFontSize = elmFontSize.replace(“px”,“”);'而不是'elmFontSize.replace(“px”,“”);'。 –

+0

尝试在parseInt之前提醒** elmFontSize **并检查值。 – mithunsatheesh

回答

1

有很多错误。下面是简化/重写你的函数的建议:

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'; 
    } 
} 
} 

其中getStyle是:

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”,字体大小不一定是“px”值。如果它是例如“em”,那么parseInt将失败,因为它试图转换非数字值。

+1

这是不正确的。 'parseInt'可以在我有权访问的每个浏览器(Chrome,Safari,FF)中处理像'20em'这样的字符串。 –

+0

你是对的Matt。 parseInt处理它。 – Karlth