まず、この問題に対処するように見えるカップルリンクを見つけましたが、javascript(および一般的なコード)の理解はかなり悪く、ソリューション/説明は一般化するのが難しいここに。私はそれが閉鎖(私はぼんやりと理解する)と関係していることを知っています。forループで複数の関数を作成する
背景: チェックボックスをオンにしたときに表示されるはずの4つのラジオボタンを持つループを使用して、10個のチェックボックスを作成しました。私は、10個以上の関数を1つずつ作成することによって、 "表示/消滅"を達成することができますが、ループで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>
<?
}
?>
上記のコードは、手動でt0Disp()からt9Disp()関数を入力すると問題なく動作します。私は、機能だけで私はちょうどjavascriptのループがちょうどで10個の異なる機能を吐き出すしない理由を理解する必要が
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";
}
}
}
()t9Dispの作品(下記)これらの関数を作成するためのループを作ってみました場合には私のPHPループが10個の異なるチェックボックスを吐き出す方法?
ありがとうございました!
あなたは複数の関数を必要としません。ループではありません。 – Rayon
[ループ内でのJavaScriptクロージャの簡単な実例](http://stackoverflow.com/questions/750486/javascript-closure-inside-loops) -simple-practical-example) – vlaz
複写に加えて、私はなぜパラメータを取る単純に1つではなく、10の機能が必要なのかも知らない。 – vlaz