速さこそ正義

調べたことを書いていきます。

【JavaScript】指定したClassNameを含むIdをすべて取得する

はじめに

ID一覧を取得する方法がわからなかったので、 色々調べて動いたメモ。

やりたいこと

<div class="hoge" id="1"></div>
<div class="hoge" id="2"></div>
<li class="hoge" id="nuo"></li>
<li class="hoge" id="gaa"></li>
<li class="hoge" id="hua"></li>

などとなっているときに、class="hoge"

id=1,2,nuo,gaa,hua

といった不規則なID名をすべて取り出す。

やり方

指定したクラスのID一覧を取得

//指定したクラスの要素をcsに入れる
var cs=document.getElementsByClassName("クラス名");

//csの中からIDの情報をループで取り出す 
for (var i=0; i< cs.length;i++){ 
    idd=cs[i].getAttribute("id");
}

こんな感じでiddにIDが入った。

応用

取得したIDをすべてクリックする

もともとはこれがやりたくて調べた

var cs=document.getElementsByClassName("クラス名");
for (var i=0; i< cs.length;i++){
    idd=cs[i].getAttribute("id");
    var clickMe = document.getElementById(idd);
    if( /*@cc_on ! @*/ false ) {
        clickMe.fireEvent("onclick");
    }
    else {
        var event = document.createEvent( "MouseEvents" );
        event.initEvent("click", false, true);
        clickMe.dispatchEvent(event);
    } 
    true
}

ブックマークレット

ブックマークレット化すれば、ボタンを押すだけで実行される f:id:cyamax:20170522232825p:plain

javascript:(function()
{
    var cs=document.getElementsByClassName("クラス名");
    for (var i=0; i< cs.length;i++){
        idd=cs[i].getAttribute("id");
        var clickMe = document.getElementById(idd);
        if( /*@cc_on ! @*/ false ) {clickMe.fireEvent("onclick");
        } 
        else {
            var event = document.createEvent( "MouseEvents" );
            event.initEvent("click", false, true);
            clickMe.dispatchEvent(event);
        } 
        true
        }
})();

WEB画面上で何度もクリックしないといけない!という場合に、ワンクリックで済むので便利です。