parseInt()错误:无效的参数
当我使用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>
有很多错误。下面是简化/重写你的函数的建议:
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;
}
谢谢生病尝试实施它,并得到你 – code511788465541441
它不起作用。 fsNow总是“未定义”我想这是因为我的网页(不是我的)的字体大小没有明确地设置它使用CSS类。 style.fontSize为所有元素返回一个空字符串。 – code511788465541441
它应该工作。这是一个使用相同函数的jsfiddle,封装在一个对象中。这一次在任何html元素中都没有明确的字体大小。点击按钮,看到字体增长@ http://jsfiddle.net/aCqVZ/ – KooiInc
parseInt
以一个字符串作为第一个参数,以增加在框架上的每一个元素的字体大小,您可能希望确保elmFontSize实际上是使用typeof(elmFontSize)
一个字符串。如果它不是字符串,则可以在调用parseInt
函数之前将其转换为字符串。
您只处理“px”,字体大小不一定是“px”值。如果它是例如“em”,那么parseInt将失败,因为它试图转换非数字值。
这是不正确的。 'parseInt'可以在我有权访问的每个浏览器(Chrome,Safari,FF)中处理像'20em'这样的字符串。 –
你是对的Matt。 parseInt处理它。 – Karlth
你调用'parseInt函数()'前检查'elmFontSize'的价值?尝试'console.log(elmFontSize)'。 – Chris
这可能与问题没有关系,但是当你使用'replace'时,你不会将结果设置为任何东西:你需要使用'elmFontSize = elmFontSize.replace(“px”,“”);'而不是'elmFontSize.replace(“px”,“”);'。 –
尝试在parseInt之前提醒** elmFontSize **并检查值。 – mithunsatheesh