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

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

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

我有一个执行身体onload的function:

 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的地方,但是,我希望函数能够影响类名为’project_download_btn’的所有 div

我不是jQuery的粉丝,所以尽可能避免这样做会很棒。

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

 var buttons = document.getElementsByClassName('project_download_btn'); for(var i=0; i< buttons.length; i++){ buttons[i].hidden = true; } 
 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; } } 

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

 document.getElementsByClassName('project_download_btn')[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; } }