我是 JavaScript 原型(prototype)和闭包的新手,以下是我的代码:
function setFontSize(size) {
return function() {
console.log("font size: "+size+ " setFontSize()");
document.body.style.fontSize = size + 'px';
};
}
function setFontSizeInput(ipval) {
console.log("font size ipval : "+ipval);
var fontsizeIP= setFontSize(ipval);
}
window.onload = function() {
var fontsize18 = setFontSize(18);
var fontsize14 = setFontSize(14);
var fontsize16 = setFontSize(16);
document.getElementById('size-18').onclick = fontsize18;
document.getElementById('size-14').onclick = fontsize14;
document.getElementById('size-16').onclick = fontsize16;
}
在 onkeyup
事件中,我正在调用 setFontSizeInput
,当用户在输入字段中输入值时,我想更改字体大小,所以我创建了 setFontSize( ipval)
并传递了输入字段值,但它没有反射(reflect)。知道我的代码有什么问题吗?
最佳答案
修改你的代码如下:
function setFontSizeInput(ipval) {
console.log("font size ipval : " + ipval);
setFontSize(ipval)();
}
注意 ()
在 setFontSize(ipval)
之后。它们是必需的,因为 setFontSize
返回函数。
演示:http://jsfiddle.net/WxKJs/2/
我还建议在更改字体大小之前使用一些小的延迟,以避免在键入 12 时字体从 1 闪烁到 12:
function setFontSizeInput(ipval) {
delay(setFontSize(ipval));
}
var delay = (function() {
var delay = 100, timer;
return function(callback) {
if (timer) clearTimeout(timer);
timer = setTimeout(callback, delay);
};
})();
演示:http://jsfiddle.net/WxKJs/3/
关于javascript - 如何将值从输入字段传递给 JavaScript 闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21255193/