document.getElementsByClassNameで取得する値について
document.getElementsByClassNameで特定のclassを取得して、forEachでループさせる際に、2つあるはずの要素が1つしかカウントされません。
consoleで確認すると、下記値が返ってきます。
MODAL.methods.show() = length: 2
MODAL.methods.overlay() = length: 2
MODAL.methods.close() = length: 1
querySelectorAllで対応すると解決するのですが、getElementsByClassNameだとうまくいかない理由が分かりません…
原因がわかる方いらっしゃいましたら教えていただきたいです<(_ _)>
MODAL.methods = {
show: function(elm){
var $self = elm;
var $next = $self.nextElementSibling;
if($next.classList.contains(MODAL.tar) && !$self.classList.contains(MODAL.active)) {
$self.classList.add(MODAL.active);
$next.classList.add(MODAL.active);
$next.style.display = 'block';
console.log(document.getElementsByClassName(MODAL.active));
MODAL.methods.overlay();
}
},
close: function(){
var $close = document.getElementById(MODAL.close);
console.log(document.getElementsByClassName(MODAL.active));
Array.prototype.forEach.call(document.getElementsByClassName(MODAL.active), function(elm){
elm.classList.remove(MODAL.active);
if(elm.classList.contains(MODAL.tar)){
elm.style.display = 'none';
}
});
$close.remove();
},
overlay: function(){
console.log(document.getElementsByClassName(MODAL.active));
document.body.insertAdjacentHTML('beforeend', '<div id="' + MODAL.close + '" class="modal-overlay" onClick="MODAL.methods.close();"><span class="modal-overlay_child">close</span></div>');
}
};