1

我有一个布尔变量。它存储在隐藏的输入字段中。基本上,如果用户已登录,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”的 s。

我不是 jQuery 的粉丝,所以如果可能的话最好避免这种情况。

4

4 回答 4

4

您可以简单地遍历元素,而不是只取第 0 个。

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

for(var i=0; i< buttons.length; i++){
    buttons[i].hidden = true;
}
于 2013-06-07T13:58:31.357 回答
0

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

document.getElementsByClassName('project_download_btn')[0]
于 2013-06-07T13:58:38.747 回答
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;
    }
}
于 2013-06-07T13:58:51.547 回答
0

遍历每个div包含您的下载按钮并设置hiddentrue

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;
    }
}
于 2013-06-07T14:10:44.477 回答