parseFloat 在应该是 -0.1 或 0.1 时不断返回 NaN
parseFloat keeps returning NaN when it should be -0.1 or 0.1
parseFloat 在控制台中打印时应该为 -0.1 或 0.1 时不断返回 NaN.log,我很可能只是累了,但我看不到问题。一如既往地非常感谢任何帮助,这里也不是找jQuery的答案,这一定是JS的
function startUp() {
var fontButtons = document.getElementsByClassName("fontsizer");
for (var i=0; i < fontButtons.length; i++) {
document.getElementsByClassName("fontsizer")[i].addEventListener("click", resizeText);
}
};
window.onload = startUp;
function resizeText() {
var fontChange = parseFloat(this.value);
console.log(fontChange);
if (document.body.style = "") {
document.body.setAttribute("style", "font-size:1.0em;");
}
var currentFontSize = parseFloat(document.body.style.fontSize.replace('em', ''));
console.log(currentFontSize);
document.body.style.fontSize = (currentFontSize + fontChange) + "em";
};
和 HTML
<div id="fontbuttons">
<input class="fontsizer" value="-0.1" type="image" id="fontdown" alt="-" src="fontdown.png" />
<input class="fontsizer" value="0.1" type="image" id="fontup" alt="+" src="fontup.png" />
</div>
你有几个问题。
首先,将属性设置为 onclick
并将回调作为字符串传入将使用 eval
来调用函数,this
将指向全局对象,因此请改用 addEventListener('click', resizeText)
。
其次,你不能用这样的字母parseFloat
数字 - 在解析之前去掉em
:
var currentFontSize = parseFloat(document.body.style.fontSize.replace('em', ''));
第三,您正在连接而不是添加。改变
document.body.style.fontSize = currentFontSize + fontChange + "em"
自
document.body.style.fontSize = (currentFontSize + fontChange) + "em"
工作演示 : http://jsfiddle.net/8tv550us/
我相信 resizeText() 函数中的 this.value 是你的错误所在。 你认为这里的"这个"指的是什么?我认为它目前将是窗口对象。
添加事件侦听器而不是设置属性,this
将指向正确的对象
document.getElementsByClassName("fontsizer")[i].addEventListener("click", resizeText);
相关文章:
- 如何防止Math.max()返回NaN
- 尝试求和时,在我的表的页脚中返回$NaN
- 为什么Math.pow(1,无穷大)返回NaN
- JavaScript:返回NaN(第2部分)
- 为什么这个代码返回NaN
- Protractor-分配给element.all.locator.count的变量返回NaN why
- javascript 在求和时返回 NaN
- 计算地理位置距离返回 NaN
- nan在C++中是什么意思?为什么pow(-4,-2.1)返回-nan
- 货币字段上的 parseInt 返回 NaN
- Javascript:解析csv中的字符串返回NaN(不是数字)
- JS脚本返回NaN
- 解析html td返回NaN
- Javascript函数返回NaN
- 在Javascript中计算日期会返回NaN-NaN-NaN
- 如果我对索引进行硬编码,它会按预期工作,为什么这个增量器会返回NAN
- new Date返回NaN或从服务器日期()开始的错误时间
- 变量递增返回 NaN
- 为什么我的基于约简的平均值函数返回 NaN
- Javascript-将字符串转换为Int会返回NaN错误