我使用了以下代码,但无法正常运行。我的目标是每当我点击字体大小'例如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>
答案 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');