在javascript中关闭似乎无法正常工作

时间:2014-07-08 13:51:17

标签: javascript

我使用了以下代码,但无法正常运行。我的目标是每当我点击字体大小'例如12,14和16,字体大小及其颜色需要相应地同时改变。但是,它没有按预期工作,任何帮助?

<body>
    <p>Some paragraph text</p>
    <h1>some heading 1 text</h1>
    <h2>some heading 2 text</h2>

    <a href="#" id="size-12">12</a>
    <a href="#" id="size-14">14</a>
    <a href="#" id="size-16">16</a>

    <script type="text/javascript">
function makeSizer(size) {
  return function(oclor) {

    document.body.style.fontSize = size + 'px';
    document.body.style.color = oclor;
  };
}
var a= "green", b= "blue", c="red";

var size12 = makeSizer(12)(a);
var size14 = makeSizer(14)(b);
var size16 = makeSizer(16)(c);

document.getElementById('size-12').onclick = size12;
document.getElementById('size-14').onclick = size14;
document.getElementById('size-16').onclick = size16;

</script>
    </body>

2 个答案:

答案 0 :(得分:3)

这就是你的问题所在。

您将变量设置为匿名函数的结果。这是undefined。 然后,您将onclick事件设置为结果。

var size12 = makeSizer(12)(a);
var size14 = makeSizer(14)(b);
var size16 = makeSizer(16)(c);

document.getElementById('size-12').onclick = size12;
document.getElementById('size-14').onclick = size14;
document.getElementById('size-16').onclick = size16;

您想要的是将变量设置为函数。如:

var size12 = function(){makeSizer(12)(a)};

答案 1 :(得分:0)

您有什么理由不能做以下事情吗?

编辑:抱歉,错过了返回功能。感谢你指出@DanielKnippers

function makeSizer(size,oclor) {
    return function () {
        document.body.style.fontSize = size + 'px';
        document.body.style.color = oclor;
    };
}

var size12 = makeSizer(12,'green');
var size14 = makeSizer(14,'blue');
var size16 = makeSizer(16,'red');