JavaScript 代码无效,不能 hide/show div 内容
JavaScript code not working,can't hide/show div contents
Stack Overflow 和整个 JavaScript 的新手。
我一直在尝试制作一个简单的函数,将点击时几个 div 元素的内联显示属性从 "none" 更改为 "block"。在这里尝试了类似问题的不同代码位,但没有任何运气。这是代码。很抱歉,如果我没有正确格式化它:(
代码:
function toggleMenuItem(subGroupId) {
subGroupIdStyle = document.getElementById('subGroupId').style;
var see = subGroupIdStyle.display;
if (see == 'none') {
see = 'block';
} else {
see = 'none';
}
};
<div id="content">
<p id="title">Computer <br>components</p>
<p id="item1" class="menuitem" onclick="toggleMenuItem('subgroup1');">CPUs</p>
<div id="subgroup1" style="display:none;">
+ <a href="#" class="submenu">Intel</a> <br> + <a href="#" class="submenu">AMD</a> <br> + <a href="#" class="submenu">ARM</a> <br> + <a href="#" class="submenu">nVidia</a>
</div>
<p id="item2" class="menuitem" onclick="toggleMenuItem('subgroup2');">Motherboards</p>
<div id="subgroup2" style="display:none;">
+ <a href="#" class="submenu">Asus</a> <br> + <a href="#" class="submenu">Asrock</a> <br> + <a href="#" class="submenu">Foxconn</a> <br> + <a href="#" class="submenu">Gigabyte</a>
</div>
<p id="item3" class="menuitem" onclick="toggleMenuItem('subgroup3');">Memory</p>
<div id="subgroup3" style="display:none;">
+ <a href="#" class="submenu">Samsung</a> <br> + <a href="#" class="submenu">A-Data</a> <br> + <a href="#" class="submenu">Corsair</a> <br> + <a href="#" class="submenu">Kingston</a>
</div>
<p id="item4" class="menuitem" onclick="toggleMenuItem('subgroup4');">Hard Drives</p>
<div id="subgroup4" style="display:none;">
+ <a href="#" class="submenu">Western Digital</a> <br> + <a href="#" class="submenu">Seagate</a> <br> + <a href="#" class="submenu">Toshiba</a> <br> + <a href="#" class="submenu">Hitachi</a>
</div>
</div>
试试这个:
subGroupIdStyle = document.getElementById('subGroupId').style;
改为
subGroupIdStyle = document.getElementById(subGroupId).style;
当您将变量包装在“ ”中时,您并未传递变量
subGroupIdStyle = document.getElementById(subGroupId).style;
删除 subGroupId 中的 '',这样您实际上传递了变量字符串。
另外,不要做 see = 'block';
,而是做 subGroupIdStyle.display = 'block'
,其他条件也一样。
代码 see = 'block'
不起作用,因为您当时只是复制了 subGroupIdStyle.display 的值,当您更改 subGroupIdStyle.display 的值时,您可以使用它来检查值=16=] 它不会改变 subGroupIdStyle.display
的值。您应该避免完全使用 see
并在该位置使用 subGroupIdStyle.display
。
function toggleMenuItem(subGroupId) {
subGroupIdStyle = document.getElementById(subGroupId).style;
var see = subGroupIdStyle.display;
if (see == 'none') {
subGroupIdStyle.display = 'block';
}
else {
subGroupIdStyle.display = 'none';
}
};
<div id="content">
<p id="title">Computer <br>components</p>
<p id="item1" class="menuitem" onclick="toggleMenuItem('subgroup1');">CPUs</p>
<div id="subgroup1" style="display:none;">
+ <a href="#" class="submenu">Intel</a> <br>
+ <a href="#" class="submenu">AMD</a> <br>
+ <a href="#" class="submenu">ARM</a> <br>
+ <a href="#" class="submenu">nVidia</a>
</div>
<p id="item2" class="menuitem" onclick="toggleMenuItem('subgroup2');">Motherboards</p>
<div id="subgroup2" style="display:none;">
+ <a href="#" class="submenu">Asus</a> <br>
+ <a href="#" class="submenu">Asrock</a> <br>
+ <a href="#" class="submenu">Foxconn</a> <br>
+ <a href="#" class="submenu">Gigabyte</a>
</div>
<p id="item3" class="menuitem" onclick="toggleMenuItem('subgroup3');">Memory</p>
<div id="subgroup3" style="display:none;">
+ <a href="#" class="submenu">Samsung</a> <br>
+ <a href="#" class="submenu">A-Data</a> <br>
+ <a href="#" class="submenu">Corsair</a> <br>
+ <a href="#" class="submenu">Kingston</a>
</div>
<p id="item4" class="menuitem" onclick="toggleMenuItem('subgroup4');">Hard Drives</p>
<div id="subgroup4" style="display:none;">
+ <a href="#" class="submenu">Western Digital</a> <br>
+ <a href="#" class="submenu">Seagate</a> <br>
+ <a href="#" class="submenu">Toshiba</a> <br>
+ <a href="#" class="submenu">Hitachi</a>
</div>
</div>
最好使用单行 if
条件。变量传递是 wrong.you 应用字符串而不是传递变量。你可以这样使用
document.getElementById(subGroupId)
并且 see = 'block';
不会覆盖元素 style.so 你可以使用像 variable.style.display="block"
这样的完整样式
function toggleMenuItem(subGroupId) {
var subGroupIdStyle = document.getElementById(subGroupId);
subGroupIdStyle.style.display = (subGroupIdStyle.style.display =='none')?'block':'none';
}
<div id="content">
<p id="title">Computer <br>components</p>
<p id="item1" class="menuitem" onclick="toggleMenuItem('subgroup1');">CPUs</p>
<div id="subgroup1" style="display:none;">
+ <a href="#" class="submenu">Intel</a> <br> + <a href="#" class="submenu">AMD</a> <br> + <a href="#" class="submenu">ARM</a> <br> + <a href="#" class="submenu">nVidia</a>
</div>
<p id="item2" class="menuitem" onclick="toggleMenuItem('subgroup2');">Motherboards</p>
<div id="subgroup2" style="display:none;">
+ <a href="#" class="submenu">Asus</a> <br> + <a href="#" class="submenu">Asrock</a> <br> + <a href="#" class="submenu">Foxconn</a> <br> + <a href="#" class="submenu">Gigabyte</a>
</div>
<p id="item3" class="menuitem" onclick="toggleMenuItem('subgroup3');">Memory</p>
<div id="subgroup3" style="display:none;">
+ <a href="#" class="submenu">Samsung</a> <br> + <a href="#" class="submenu">A-Data</a> <br> + <a href="#" class="submenu">Corsair</a> <br> + <a href="#" class="submenu">Kingston</a>
</div>
<p id="item4" class="menuitem" onclick="toggleMenuItem('subgroup4');">Hard Drives</p>
<div id="subgroup4" style="display:none;">
+ <a href="#" class="submenu">Western Digital</a> <br> + <a href="#" class="submenu">Seagate</a> <br> + <a href="#" class="submenu">Toshiba</a> <br> + <a href="#" class="submenu">Hitachi</a>
</div>
</div>
你有 2 个错误:
1- 您不应将变量 subGroupId 括在引号中。
2- 您不能通过以下方式更改 dom 的样式:
var see = subGroupIdStyle.display;
if (see == 'none') {
see = 'block';
} else {
see = 'none';
}
使用
subGroupIdStyle.display = 'block';
Stack Overflow 和整个 JavaScript 的新手。
我一直在尝试制作一个简单的函数,将点击时几个 div 元素的内联显示属性从 "none" 更改为 "block"。在这里尝试了类似问题的不同代码位,但没有任何运气。这是代码。很抱歉,如果我没有正确格式化它:(
代码:
function toggleMenuItem(subGroupId) {
subGroupIdStyle = document.getElementById('subGroupId').style;
var see = subGroupIdStyle.display;
if (see == 'none') {
see = 'block';
} else {
see = 'none';
}
};
<div id="content">
<p id="title">Computer <br>components</p>
<p id="item1" class="menuitem" onclick="toggleMenuItem('subgroup1');">CPUs</p>
<div id="subgroup1" style="display:none;">
+ <a href="#" class="submenu">Intel</a> <br> + <a href="#" class="submenu">AMD</a> <br> + <a href="#" class="submenu">ARM</a> <br> + <a href="#" class="submenu">nVidia</a>
</div>
<p id="item2" class="menuitem" onclick="toggleMenuItem('subgroup2');">Motherboards</p>
<div id="subgroup2" style="display:none;">
+ <a href="#" class="submenu">Asus</a> <br> + <a href="#" class="submenu">Asrock</a> <br> + <a href="#" class="submenu">Foxconn</a> <br> + <a href="#" class="submenu">Gigabyte</a>
</div>
<p id="item3" class="menuitem" onclick="toggleMenuItem('subgroup3');">Memory</p>
<div id="subgroup3" style="display:none;">
+ <a href="#" class="submenu">Samsung</a> <br> + <a href="#" class="submenu">A-Data</a> <br> + <a href="#" class="submenu">Corsair</a> <br> + <a href="#" class="submenu">Kingston</a>
</div>
<p id="item4" class="menuitem" onclick="toggleMenuItem('subgroup4');">Hard Drives</p>
<div id="subgroup4" style="display:none;">
+ <a href="#" class="submenu">Western Digital</a> <br> + <a href="#" class="submenu">Seagate</a> <br> + <a href="#" class="submenu">Toshiba</a> <br> + <a href="#" class="submenu">Hitachi</a>
</div>
</div>
试试这个:
subGroupIdStyle = document.getElementById('subGroupId').style;
改为
subGroupIdStyle = document.getElementById(subGroupId).style;
当您将变量包装在“ ”中时,您并未传递变量
subGroupIdStyle = document.getElementById(subGroupId).style;
删除 subGroupId 中的 '',这样您实际上传递了变量字符串。
另外,不要做 see = 'block';
,而是做 subGroupIdStyle.display = 'block'
,其他条件也一样。
代码 see = 'block'
不起作用,因为您当时只是复制了 subGroupIdStyle.display 的值,当您更改 subGroupIdStyle.display 的值时,您可以使用它来检查值=16=] 它不会改变 subGroupIdStyle.display
的值。您应该避免完全使用 see
并在该位置使用 subGroupIdStyle.display
。
function toggleMenuItem(subGroupId) {
subGroupIdStyle = document.getElementById(subGroupId).style;
var see = subGroupIdStyle.display;
if (see == 'none') {
subGroupIdStyle.display = 'block';
}
else {
subGroupIdStyle.display = 'none';
}
};
<div id="content">
<p id="title">Computer <br>components</p>
<p id="item1" class="menuitem" onclick="toggleMenuItem('subgroup1');">CPUs</p>
<div id="subgroup1" style="display:none;">
+ <a href="#" class="submenu">Intel</a> <br>
+ <a href="#" class="submenu">AMD</a> <br>
+ <a href="#" class="submenu">ARM</a> <br>
+ <a href="#" class="submenu">nVidia</a>
</div>
<p id="item2" class="menuitem" onclick="toggleMenuItem('subgroup2');">Motherboards</p>
<div id="subgroup2" style="display:none;">
+ <a href="#" class="submenu">Asus</a> <br>
+ <a href="#" class="submenu">Asrock</a> <br>
+ <a href="#" class="submenu">Foxconn</a> <br>
+ <a href="#" class="submenu">Gigabyte</a>
</div>
<p id="item3" class="menuitem" onclick="toggleMenuItem('subgroup3');">Memory</p>
<div id="subgroup3" style="display:none;">
+ <a href="#" class="submenu">Samsung</a> <br>
+ <a href="#" class="submenu">A-Data</a> <br>
+ <a href="#" class="submenu">Corsair</a> <br>
+ <a href="#" class="submenu">Kingston</a>
</div>
<p id="item4" class="menuitem" onclick="toggleMenuItem('subgroup4');">Hard Drives</p>
<div id="subgroup4" style="display:none;">
+ <a href="#" class="submenu">Western Digital</a> <br>
+ <a href="#" class="submenu">Seagate</a> <br>
+ <a href="#" class="submenu">Toshiba</a> <br>
+ <a href="#" class="submenu">Hitachi</a>
</div>
</div>
最好使用单行 if
条件。变量传递是 wrong.you 应用字符串而不是传递变量。你可以这样使用
document.getElementById(subGroupId)
并且 see = 'block';
不会覆盖元素 style.so 你可以使用像 variable.style.display="block"
function toggleMenuItem(subGroupId) {
var subGroupIdStyle = document.getElementById(subGroupId);
subGroupIdStyle.style.display = (subGroupIdStyle.style.display =='none')?'block':'none';
}
<div id="content">
<p id="title">Computer <br>components</p>
<p id="item1" class="menuitem" onclick="toggleMenuItem('subgroup1');">CPUs</p>
<div id="subgroup1" style="display:none;">
+ <a href="#" class="submenu">Intel</a> <br> + <a href="#" class="submenu">AMD</a> <br> + <a href="#" class="submenu">ARM</a> <br> + <a href="#" class="submenu">nVidia</a>
</div>
<p id="item2" class="menuitem" onclick="toggleMenuItem('subgroup2');">Motherboards</p>
<div id="subgroup2" style="display:none;">
+ <a href="#" class="submenu">Asus</a> <br> + <a href="#" class="submenu">Asrock</a> <br> + <a href="#" class="submenu">Foxconn</a> <br> + <a href="#" class="submenu">Gigabyte</a>
</div>
<p id="item3" class="menuitem" onclick="toggleMenuItem('subgroup3');">Memory</p>
<div id="subgroup3" style="display:none;">
+ <a href="#" class="submenu">Samsung</a> <br> + <a href="#" class="submenu">A-Data</a> <br> + <a href="#" class="submenu">Corsair</a> <br> + <a href="#" class="submenu">Kingston</a>
</div>
<p id="item4" class="menuitem" onclick="toggleMenuItem('subgroup4');">Hard Drives</p>
<div id="subgroup4" style="display:none;">
+ <a href="#" class="submenu">Western Digital</a> <br> + <a href="#" class="submenu">Seagate</a> <br> + <a href="#" class="submenu">Toshiba</a> <br> + <a href="#" class="submenu">Hitachi</a>
</div>
</div>
你有 2 个错误:
1- 您不应将变量 subGroupId 括在引号中。
2- 您不能通过以下方式更改 dom 的样式:
var see = subGroupIdStyle.display;
if (see == 'none') {
see = 'block';
} else {
see = 'none';
}
使用
subGroupIdStyle.display = 'block';