javascript - 如何将值从输入字段传递给 JavaScript 闭包

标签 javascript jquery jquery-events

我是 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)。知道我的代码有什么问题吗?

For JSFiddle Click

最佳答案

修改你的代码如下:

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/

相关文章:

javascript - 在带有书签的索引处将文本插入 TinyMCE 时丢失选择

java - 如何知道是否有其他窗口使用相同的 JSESSIONID?

javascript - 具有外部 URL 的 iframe,文档单击不起作用

javascript - 两个元素使用相同的事件函数

javascript - 当所有文本框在 jQuery 中都有值时如何启用按钮?

javascript - 如何通过一个按钮在 jQuery 中将 'replace' 数字与 'x' s' 进行比较?

javascript - 更改 2 个进度条的过渡和样式

javascript - Bootstrap 轮播

javascript - 事件处理程序内的事件处理程序正在成倍增加

javascript - 从 "GET"参数中获取值 (JavaScript)