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
    }
}

私の問題は、nth term を求めるところ.item(0)です。これは、関数を実行する div を選択する場所ですが、クラス名が「project_download_btn」のすべて の sに関数が影響するようにしたいと考えています。div

私は 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 に答える