繰り返し処理を使って要素を消すJavaScript

JavaScript

繰り返し処理を使って要素を消す [JavaScript]

今の世の中、提供されているサービスを利用している人が多い思いますが、その中でフッターとかサイドバーの下の方とかで、余計な表示をしている要素を消したい事があると思います。

こう言った時、単純に要素削除を記載すると表示順によって、消せないまたは消した後復活のような挙動をするものがあります。このような実装がなされている時はsetInterval() メソッドを利用します。

setInterval() メソッドは、一定の間隔で関数やコードスニペットを繰り返し呼び出すため、setIntervalを利用して毎秒処理を実行させ、実行された処理内で要素の判定を行い要素を消し、要素がなければsetIntervalの実行をclearIntervalで止めるといった方法です。

以前setIntervalで文言表示を強制するような処理を見かけましたが、このような場合でもsetIntervalを使った削除をし続ける事で、一瞬文言が表示されるものの、表示を打ち消し削除こともできます。

id指定の場合

<script type='text/javascript'>
// <![CDATA[
var timer;
window.onload = function () {
    timer = setInterval(dell, 30);
};
var dell = function () {
    //削除要素の親id
    var target_id_ele = document.getElementById("target_id_name");
    if (target_id_ele.hasChildNodes()) {
        target_id_ele.removeChild(target_id_ele.firstChild);
    } else {
        clearInterval(timer);
    }
};
// ]]>
</script>

class指定の場合

<script type='text/javascript'>
// <![CDATA[
var timer_contd;
window.onload = function () {
    timer_contd = setInterval(dell_contd, 30);
};
var dell_contd = function () {
    //class名を指定する場合
    var elems = document.getElementsByClassName("target_class_name");
    if (elems.length) {
        for (var i in elems) {
            var e = elems[0];
            if (typeof e !== "undefined") {
              e.parentNode.removeChild(e);
            }
        }
    } else {
        clearInterval(timer_contd);
    }
};
// ]]>
</script>

要素削除をするにあたって、要素の選択と存在判定にそれぞれコツがいるので注意が必要です。undefinedに気をつけて下さい。

邪魔な要素をタイマー処理で消す方法は、繰り返し実行し続けるため、エラーになるとコンソールにエラーが大量に出続けるため、個人的には気軽に使うことはオススメしません

参考:MDN https://developer.mozilla.org/ja/docs/Web/API/Window/setInterval

  • この記事を書いた人

九十九史恩

キーを叩いていないときは、都会や田舎の風景を探検しています。

よく読まれている記事

条件の0=0は全てが正であるを意味するSQL 1

SQLの条件に0=0のような記述を見かけます。 変わった書き方の条件ですが、これは「全てが正である」事を意味しており、結合条件の場合はCROSS JOINと同じです。 下記の例で言えば、結合するsub ...

DISTINCTを使わないで重複排除を考えるSQL 2

SQLのDISTINCTはEXISTSとかGROUP BYでなんとかする事もできます。 DISTINCTは暗黙的なソートがされますが、何のDBを使うにせよ過去のバージョンならともかく、最近のバージョン ...

RFC 5322に準拠させた正規表現言語別 3

RFC5322で定義されている正規表現を、各言語の正規表現に変化させた形になります。 完全な電子メール正規表現は存在しないので、結局のところ何かの公式基準に従っていたとしても、自分が携わるサービスのル ...

-JavaScript