Loh*_*don 3 javascript if-statement
我现在拥有的是
function setMenuCurrentTo(variable)
{
document.getElementById("game_" + variable).style.display = "block";
var elems = document.getElementsByClassName("current_nav");
for (var i=elems.length; i--;) {
elems[i].style.display = "none";
elems[i].className = 'none';
}
document.getElementById("game_" + variable).className="current_nav";
}
}
Run Code Online (Sandbox Code Playgroud)
因此,当我单击带有特定元素(变量)的标签时,它会添加一个内容并“隐藏”另一个内容。但是有一个错误,当我在同一个按钮上单击两次时,内容会消失并且我不再有内容。
所以我尝试了这个代码:
function setMenuCurrentTo(variable)
{
document.getElementById("game_" + variable).style.display = "block";
if (getElementById("game_" + variable).hasClass("current_nav")) {
}
else {
var elems = document.getElementsByClassName("current_nav");
for (var i=elems.length; i--;) {
elems[i].style.display = "none";
elems[i].className = 'none';
}
document.getElementById("game_" + variable).className="current_nav";
}
Run Code Online (Sandbox Code Playgroud)
这
if (getElementById("game_" + variable).hasClass("current_nav")) {} else {
Run Code Online (Sandbox Code Playgroud)
使代码不起作用,内容出现但没有其他“隐藏”。我的代码有什么问题?谢谢,我对 JavaScript 很陌生,昨天我得到了原始代码的帮助。再次感谢你。
编辑:
我得到了正确的答案:来自 wroniasty
function setMenuCurrentTo(variable)
{
document.getElementById("game_" + variable).style.display = "block";
if (jQuery('#game_' + variable).hasClass('current_nav')) {
}
else {
var elems = document.getElementsByClassName("current_nav");
for (var i=elems.length; i--;) {
elems[i].style.display = "none";
elems[i].className = 'none';
}
document.getElementById("game_" + variable).className="current_nav";
}
}
Run Code Online (Sandbox Code Playgroud)
getElementById返回的DOMNode并且没有hasClass在方法DOMNode。
你可能想使用一个库,比如 jQuery:
jQuery('#game_' + variable).hasClass('current_nav')
Run Code Online (Sandbox Code Playgroud)
本hasClass机 DOM 对象没有方法。您可以使用classList:
elem.classList.add('foo')
elem.classList.contains('foo')
Run Code Online (Sandbox Code Playgroud)
或者分开className:
elem.className.split(/\s+/).indexOf('foo') !== -1
Run Code Online (Sandbox Code Playgroud)
classListIE 9 及更低版本不支持,但如果您真的需要它,您可以获得垫片。className使用正则表达式拆分将在没有正则表达式的情况下正常工作。
另外,我会考虑尝试 jQuery。你可以简化你的代码:
function setMenuCurrentTo(name) {
$('.current_nav').hide();
$('#game_' + name).show().addClass('current_nav');
}
Run Code Online (Sandbox Code Playgroud)