【问题标题】:Making blocks visible/invisible using javascript使用 javascript 使块可见/不可见
【发布时间】:2019-11-14 04:05:54
【问题描述】:

这是我的代码。

var i = 0;
var submenues = document.getElementsByClassName("submenu");
var click = 1;

function submenuvisible() {
  if (click == 1) {
    for (i; i < submenues.length; i++) {
      submenues[i].style.display = "block";
    }
    click = 2;
    return;
  }
  if (click == 2) {
    for (i; i < submenues.length; i++) {
      submenues[i].style.display = "none";
    }
    click = 1;
    return;
  }
}

虽然当我 onclick=submenuvisible() 它只工作 1 次。我做错了什么?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    你的错误在于你的 for 循环。

    你在哪里:for (i; i &lt; submenues.length; i++) {

    您需要在 for 循环开始时将变量 i 重置为 0

    for (i = 0; i &lt; submenues.length; i++) {

    如果您不重置它,那么i 将保持与您第一次运行函数后相同的值。您可以通过不将 i 设为全局变量来进一步改进您的代码,但总的来说,我希望这能解释您的问题。

    【讨论】:

    • 更好的是,删除全局声明并使用for (let i=0; ... ) 将其范围限定为循环。
    • WOW 它比你好用,虽然它没有意义)c# 不需要重置变量
    • 如果这没有意义,那么我无法正确解释/帮助您。 @TylerRoper 在他们的评论中提出了一个很好的建议,也许可以帮助我改进我的答案。
    • o 只是没有完整阅读您的评论,或者您更新了它,我现在明白了,第二次 i=4(数组长度),我应该使用不同的变量一个菜鸟错误,虽然我是菜鸟
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    相关资源
    最近更新 更多