当我使用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>
答案 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;
}
答案 1 :(得分:0)
parseInt
将字符串作为第一个参数,您可能需要确保elmFontSize实际上是使用typeof(elmFontSize)
的字符串。如果它不是字符串,则可以在调用parseInt
函数之前将其转换为字符串。
答案 2 :(得分:0)
您只处理“px”,而fontsize不一定是“px”值。如果它是例如“em”,那么parseInt将失败,因为它试图转换非数值。