如何选择具有相同类名的所有元素?

时间:2013-06-07 13:53:53

标签: javascript jquery

我有一个布尔变量。它存储在隐藏的输入字段中。基本上,如果用户已登录,则为false,如果不是,则为true

有下载按钮可链接到文件下载。我的目的是使它,如果他们没有登录,按钮将不会显示,并且链接将无法工作(有一个警报说他们需要登录或其他东西会很好,但那会可能比它的价值更多的努力。

我有一个执行身体onload的功能:

function hide_download_btns(){
if (document.getElementById('download_btn_var_input').value == "true") {
    document.getElementsByClassName('project_download_btn').item(0).hidden = true
    }
}

我的问题是它要求第n个术语.item(0)。这是它选择执行该函数的div的地方,但是,我希望该函数能够影响所有 div,类名为“project_download_btn”。

我不是jQuery的粉丝,所以如果可能的话,尽量避免使用它。

4 个答案:

答案 0 :(得分:3)

你可以简单地循环遍历元素而不是仅仅取第0个。

var buttons = document.getElementsByClassName('project_download_btn');

for(var i=0; i< buttons.length; i++){
    buttons[i].hidden = true;
}

答案 1 :(得分:0)

document.getElementsByClassName返回数组,所以你感兴趣的是:

document.getElementsByClassName('project_download_btn')[0]

答案 2 :(得分:0)

if (document.getElementById('download_btn_var_input').value == "true") {
    var el = document.getElementsByClassName('project_download_btn');
    for (var i = 0; i < el.length; i++) {
        el[i].hidden = true;
    }
}

答案 3 :(得分:0)

循环显示包含下载按钮的每个div,并将hidden设置为true

if (document.getElementById('download_btn_var_input').value == "true") {
    var button_divs_array = document.getElementsByClassName('project_download_btn');
    for (var i = 0; i < button_divs_array.length; i++) {
        button_divs_array[i].hidden = true;
    }
}