当我在console.log中打印时,parseFloat应该是-0.1或0.1时保持返回NaN,我很可能只是累了,但我看不出问题。任何帮助都一如既往地非常感谢, 也没有在这里寻找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>
答案 0 :(得分:1)
我相信你的resizeText()函数中的this.value就是你的错误所在。你怎么想&#39;这个&#39;是指这里?我认为它现在将成为窗口对象。
答案 1 :(得分:1)
你有一些问题。
首先,将属性设置为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"
答案 2 :(得分:0)
添加事件侦听器而不是设置属性,this
将指向正确的对象
document.getElementsByClassName("fontsizer")[i].addEventListener("click", resizeText);