gpt4 book ai didi

javascript - javascript 中的闭包似乎无法正常工作

转载 作者:行者123 更新时间:2023-11-28 19:43:47 25 4
gpt4 key购买 nike

我有以下代码,但它无法正常工作。我的目标是每当我单击“字体大小”(例如 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>

最佳答案

这就是你的问题所在。

您正在将变量设置为匿名函数的结果。这是未定义。然后您将 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)};

关于javascript - javascript 中的闭包似乎无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24633617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com