循环中的Javascript函数

时间:2017-03-30 14:50:51

标签: javascript

我需要在页面上显示许多隐藏的块,这些块由函数显示:

function show() {
    document.getElementById('info').style.display = 'block';
}

function hide() {
    document.getElementById('info').style.display = 'none';
}

function show_x() {
    document.getElementById('info_x').style.display = 'block';
}

function hide_x() {
    document.getElementById('info_x').style.display = 'none';
}

如何在一个循环中隐藏所有这些功能? 为什么我的循环不起作用?

function show() {
    document.getElementById('info').style.display = 'block';
}

function hide() {
    document.getElementById('info').style.display = 'none';
}

for (var i = 1; i++; i <= 50) {

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

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

谢谢!

1 个答案:

答案 0 :(得分:2)

你不能这样写:

function show+i+()

您应将i作为参数传递到您的函数showhide

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

for (var i=1; i++; i<=50){
    show(i);
}

这将显示ID为infoX的所有广告,其中X是1到50之间的数字。

如何通过名称

调用函数

如果你想通过变量名称调用函数,你应该使用这种语法(取决于上下文):

window[functionName](arguments)

例如,让我们使用名为show5并使用单个参数message调用函数:

function show5(message){
    alert(message);
}

// store name of the function in variable
var functionName = 'show5';

// call function with parameter "Hello!" by its name
window[functionName]('Hello!')