为什么Javascript setInterval函数中的else语句不起作用? 朋友 设置间隔(changeFriendBtnSize,1000); 函数changebfriendbtnsize(){ 下降=上升; if(document.getElementById('friends').getElementsByClassName('large3')){ 控制台日志('111'); document.getElementById('friends').classList.remove('large3'); document.getElementById('friends').classList.add('large4'); }else if(document.getElementById('friends').getElementsByClassName('large4')){ console.log('222'); document.getElementById('friends').classList.remove('large4'); document.getElementById('friends').classList.add('large3'); } }
在我的控制台日志中,它每秒反复记录111次,但从不记录222次。类large3被删除,而large4被添加,但从来没有相反的方式,为什么 表达式为什么Javascript setInterval函数中的else语句不起作用? 朋友 设置间隔(changeFriendBtnSize,1000); 函数changebfriendbtnsize(){ 下降=上升; if(document.getElementById('friends').getElementsByClassName('large3')){ 控制台日志('111'); document.getElementById('friends').classList.remove('large3'); document.getElementById('friends').classList.add('large4'); }else if(document.getElementById('friends').getElementsByClassName('large4')){ console.log('222'); document.getElementById('friends').classList.remove('large4'); document.getElementById('friends').classList.add('large3'); } },javascript,if-statement,setinterval,Javascript,If Statement,Setinterval,在我的控制台日志中,它每秒反复记录111次,但从不记录222次。类large3被删除,而large4被添加,但从来没有相反的方式,为什么 表达式 <button id="friends" class="btn btn-primary large3">Friends</button> setInterval(changeFriendBtnSize, 1000); function changeFriendBtnSize() { let upDown = 'u
<button id="friends" class="btn btn-primary large3">Friends</button>
setInterval(changeFriendBtnSize, 1000);
function changeFriendBtnSize() {
let upDown = 'up';
if (document.getElementById('friends').getElementsByClassName('large3')) {
console.log('111');
document.getElementById('friends').classList.remove('large3');
document.getElementById('friends').classList.add('large4');
} else if (document.getElementById('friends').getElementsByClassName('large4')) {
console.log('222');
document.getElementById('friends').classList.remove('large4');
document.getElementById('friends').classList.add('large3');
}
}
始终返回节点列表。列表可能为空,但它仍然是对象引用,并且永远不会作为false
进行测试
据我所知,.getElementsByClassName()
并不是您要寻找的API。您的代码显然想要检查按钮当前具有哪个类;为此,您需要使用.contains()检查类列表
:
或者任何东西。document.getElementById('friends')。getElementsByClassName('large3')
在id为“friends”的元素中查找类为“large3”的元素(并始终返回节点列表),例如:
及
在你的情况下,你在朋友里面寻找孩子,这就是.getElementsByClassName
所做的。相反,您需要检查friends元素是否包含类名:
像这样:
document.getElementById('friends').classList.contains('large3')
使用classList.toggle()
可以大大简化此过程
而不是必须写作
elt.classList.toggle('cls', bool);
document.getElementById('friends').getElementsByClassName('large3')
何时返回错误?查找getElementsByClassName
@torazaburo getElementById足够快,没什么关系。
if (document.getElementById('friends').classList.contains('large3'))
<div id="friends"><div class="large3"></div></div>
if (document.getElementById('friends').classList.contains("large3"))
else if (document.getElementById('friends').classList.contains("large4"))
<button id="friends" class="btn btn-primary large3">Friends</button>
setInterval(changeFriendBtnSize, 1000);
function changeFriendBtnSize() {
var elt = document.getElementById('friends');
elt.classList.toggle('large3');
elt.classList.toggle('large4');
}
elt.classList.toggle('cls', bool);
if (bool) elt.classList.add('cls');
else elt.classList.remove('cls');