首先,我找到了一些似乎解决这个问题的链接,但是我对javascript(以及一般的代码)的理解非常糟糕,解决方案/解释对我来说很难概括这里。我知道这与封闭有关(我隐约明白)。用for循环创建多个函数
背景: 我创建使用循环中,每个与应该当复选框被选中出现4单选按钮10项的复选框。我可以通过逐个创建10个以上的函数来完成“出现/消失”,但我更喜欢用循环创建我的十个函数。下面的代码显示了每个复选框如何在更改时调用可变函数(例如,t0Disp())。
<?
for ($row = 0; $row <10; $row++)
{
$topic = $topic[$row];
?>
<input id="C<? echo $row ?>" type="checkbox" value="true" onchange="t<? echo $row ?>Disp()" /><? echo $topic ?>
<br />
<div id="<? echo $row ?>div" style="display: none">
<? for ($col = 0; $col < 4; $col++)
{
?>
<input type="radio" name="r<? echo $row ?>" value="<? echo $col ?>" onchange="disable<? echo $col ?>(); disable<? echo $row ?>();" />
<? echo $col+1; ?>
<?
}
?>
<br />
<br />
</div>
<?
}
?>
上面的代码工作正常,如果我通过t9Disp()函数手动输入我的t0Disp()。当我试图使一个for循环才能实现这些功能(如下图),该功能仅适用于t9Disp()
for (var i=0; i<10; i++) {
var idiv = i + "div";
var eldiv = document.getElementById(idiv);
var ci = "C" + i;
var elci = document.getElementById(ci);
window['t' + i + 'Disp'] = function() {
if(elci.checked == true) {
eldiv.style.display = "inherit";
}
else {
eldiv.style.display = "none";
}
}
}
我只需要明白,为什么JavaScript的循环不只是吐在10层不同的功能我的PHP循环吐出10个不同的复选框的方式?
谢谢!
你不需要多个函数..从来没有在循环.. – Rayon
可能重复[JavaScript闭合内部循环 - 简单实用的例子](http://stackoverflow.com/questions/750486/javascript-closure-inside-loops -simple-practical-example) – vlaz
除了重复之外,我甚至不知道为什么要使用10个函数,而不是简单地使用1个参数。 – vlaz