今の世の中、提供されているサービスを利用している人が多い思いますが、その中でフッターとかサイドバーの下の方とかで、余計な表示をしている要素を消したい事があると思います。
こう言った時、単純に要素削除を記載すると表示順によって、消せないまたは消した後復活のような挙動をするものがあります。このような実装がなされている時は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