2

こんにちは、while ループがあります。

var i = 0;

while(i < 20)
{
    function showi()
    {
        document.getElementById('tablei').style.display = 'block';
        document.getElementById('hidei').style.display = 'block';
        document.getElementById('showi').style.display = 'none';
    }

    function hidei()
    {
        document.getElementById('tablei').style.display = 'none';
        document.getElementById('hidei').style.display = 'none';
        document.getElementById('showi').style.display = 'block';
    }

 i++;

}

i 変数を取得して関数名と getElementById に表示する方法を知りたいです。

4

3 に答える 3

2
    function show(i)
    {
        document.getElementById('table' + i).style.display = 'block';
        document.getElementById('hide' + i).style.display = 'block';
        document.getElementById('show' + i).style.display = 'none';
    }

    function hide(i)
    {
        document.getElementById('table' + i).style.display = 'none';
        document.getElementById('hide' + i).style.display = 'none';
        document.getElementById('show' + i).style.display = 'block';
    }

たとえば「show(1)」または「show(42)」で呼び出すことができる関数を 1 つ作成することをお勧めします。

于 2012-04-05T14:58:54.467 に答える
0

作成したいと思います

show1(), show2(), show3(), etc...

このループで?現状では、同じ関数を何度も再定義しているだけです。

動的な関数名を作成することはできません。

function show + i() { ... }

不可能です。あなたは eval 呼び出しでそれを偽造することができます:

eval('function show' + i + '() { ... }');

しかし eval() は完全に悪であり、使用すべきではありません。

配列を使用して、次の回避策をお勧めします。

show = [];
while(i < 20) {
   show[i] = function() { ... }
}

show[7](); // execute the #7 function

しかし、これはまだ非常に醜いです。単純iにパラメーターとして渡さないのはなぜですか?

function show(i) {
   document.getElementById('table' + i).style.display = 'block';
}

あなたが望むことを正確に行いますが、定義しようとしている20以上の関数ではなく、1つの関数にすぎません。

于 2012-04-05T15:03:19.180 に答える
0

文字列連結演算子「+」を使用します。

つまり、次のように記述できます。

'table' + i

i のさまざまな値をループすると、必要な変数名が得られます。

table0
table1
table2
table3
...
于 2012-04-05T15:01:43.297 に答える