parseInt()错误:参数无效

时间:2011-08-25 09:22:35

标签: javascript

当我使用parseInt()时,我收到一个javascript错误“invalid argument”。我做错了什么?

该功能是将帧上每个元素的字体大小增加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>

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

parseInt将字符串作为第一个参数,您可能需要确保elmFontSize实际上是使用typeof(elmFontSize)的字符串。如果它不是字符串,则可以在调用parseInt函数之前将其转换为字符串。

答案 2 :(得分:0)

您只处理“px”,而fontsize不一定是“px”值。如果它是例如“em”,那么parseInt将失败,因为它试图转换非数值。