【问题标题】:JavaScript Local Storage with Sliding Dropdowns带有滑动下拉菜单的 JavaScript 本地存储
【发布时间】:2021-10-01 22:40:21
【问题描述】:

我在一个网站上工作,我对 javascript 很陌生。我有 6 个按钮,当它们被按下时,它们会向下滑动一个带有数据的下拉列表。当一个被按下时,它会收回所有其他的以占用相同的空间。它工作得很好,这就是我用我的javascript知识所做的一切。我现在需要这些下拉菜单来记住当页面使用本地存储刷新时它们所处的位置。我在网上找到了一些本地存储的例子,但在过去的几天里我尝试了其中的 30 个,但无法让它们满足我的需求。我真的坚持如何合并本地存储以在页面刷新时记住这些下拉菜单的位置。

    $(document).ready(function() {
    $("#flippy2").click(function() {
        $("#flippanel2").slideToggle("normal");
        if ($("#flippanel")[0].style.display != "none") {
            $("#flippanel").slideToggle();
        }
        if ($("#flippanel3")[0].style.display != "none") {
            $("#flippanel3").slideToggle();
        }
        if ($("#flippanel4")[0].style.display != "none") {
            $("#flippanel4").slideToggle();
        }
        if ($("#flippanel5")[0].style.display != "none") {
            $("#flippanel5").slideToggle();
        }
        if ($("#flippanel6")[0].style.display != "none") {
            $("#flippanel6").slideToggle();
        }
        if ($("#flippanel7")[0].style.display != "none") {
            $("#flippanel7").slideToggle();
        }
        if ($("#flippanel8")[0].style.display != "none") {
            $("#flippanel8").slideToggle();
        }
        if ($("#flippanel9")[0].style.display != "none") {
            $("#flippanel9").slideToggle();
        }
    });
});

$(document).ready(function() {
    $("#flippy3").click(function() {
        $("#flippanel3").slideToggle("normal");
        if ($("#flippanel4")[0].style.display != "none") {
            $("#flippanel4").slideToggle();
        }
        if ($("#flippanel5")[0].style.display != "none") {
            $("#flippanel5").slideToggle();
        }
        if ($("#flippanel6")[0].style.display != "none") {
            $("#flippanel6").slideToggle();
        }
        if ($("#flippanel7")[0].style.display != "none") {
            $("#flippanel7").slideToggle();
        }
        if ($("#flippanel8")[0].style.display != "none") {
            $("#flippanel8").slideToggle();
        }
        if ($("#flippanel9")[0].style.display != "none") {
            $("#flippanel9").slideToggle();
        }
    });
});

$(document).ready(function() {
    $("#flippy4").click(function() {
        $("#flippanel4").slideToggle("normal");
        if ($("#flippanel3")[0].style.display != "none") {
            $("#flippanel3").slideToggle();
        }
        if ($("#flippanel5")[0].style.display != "none") {
            $("#flippanel5").slideToggle();
        }
        if ($("#flippanel6")[0].style.display != "none") {
            $("#flippanel6").slideToggle();
        }
        if ($("#flippanel7")[0].style.display != "none") {
            $("#flippanel7").slideToggle();
        }
        if ($("#flippanel8")[0].style.display != "none") {
            $("#flippanel8").slideToggle();
        }
        if ($("#flippanel9")[0].style.display != "none") {
            $("#flippanel9").slideToggle();
        }
    });
});

$(document).ready(function() {
    $("#flippy5").click(function() {
        $("#flippanel5").slideToggle("normal");
        if ($("#flippanel3")[0].style.display != "none") {
            $("#flippanel3").slideToggle();
        }
        if ($("#flippanel4")[0].style.display != "none") {
            $("#flippanel4").slideToggle();
        }
        if ($("#flippanel6")[0].style.display != "none") {
            $("#flippanel6").slideToggle();
        }
        if ($("#flippanel7")[0].style.display != "none") {
            $("#flippanel7").slideToggle();
        }
        if ($("#flippanel8")[0].style.display != "none") {
            $("#flippanel8").slideToggle();
        }
        if ($("#flippanel9")[0].style.display != "none") {
            $("#flippanel9").slideToggle();
        }
    });
});

$(document).ready(function() {
    $("#flippy6").click(function() {
        $("#flippanel6").slideToggle("normal");
        if ($("#flippanel3")[0].style.display != "none") {
            $("#flippanel3").slideToggle();
        }
        if ($("#flippanel4")[0].style.display != "none") {
            $("#flippanel4").slideToggle();
        }
        if ($("#flippanel5")[0].style.display != "none") {
            $("#flippanel5").slideToggle();
        }
        if ($("#flippanel7")[0].style.display != "none") {
            $("#flippanel7").slideToggle();
        }
        if ($("#flippanel8")[0].style.display != "none") {
            $("#flippanel8").slideToggle();
        }
        if ($("#flippanel9")[0].style.display != "none") {
            $("#flippanel9").slideToggle();
        }
    });
});

$(document).ready(function() {
    $("#flippy7").click(function() {
        $("#flippanel7").slideToggle("normal");
        if ($("#flippanel3")[0].style.display != "none") {
            $("#flippanel3").slideToggle();
        }
        if ($("#flippanel4")[0].style.display != "none") {
            $("#flippanel4").slideToggle();
        }
        if ($("#flippanel5")[0].style.display != "none") {
            $("#flippanel5").slideToggle();
        }
        if ($("#flippanel6")[0].style.display != "none") {
            $("#flippanel6").slideToggle();
        }
        if ($("#flippanel8")[0].style.display != "none") {
            $("#flippanel8").slideToggle();
        }
        if ($("#flippanel9")[0].style.display != "none") {
            $("#flippanel9").slideToggle();
        }
    });
});

$(document).ready(function() {
    $("#flippy8").click(function() {
        $("#flippanel8").slideToggle("normal");
        if ($("#flippanel3")[0].style.display != "none") {
            $("#flippanel3").slideToggle();
        }
        if ($("#flippanel4")[0].style.display != "none") {
            $("#flippanel4").slideToggle();
        }
        if ($("#flippanel5")[0].style.display != "none") {
            $("#flippanel5").slideToggle();
        }
        if ($("#flippanel6")[0].style.display != "none") {
            $("#flippanel6").slideToggle();
        }
        if ($("#flippanel7")[0].style.display != "none") {
            $("#flippanel7").slideToggle();
        }
        if ($("#flippanel9")[0].style.display != "none") {
            $("#flippanel9").slideToggle();
        }
    });
});

$(document).ready(function() {
    $("#flippy9").click(function() {
        $("#flippanel9").slideToggle("normal");
        if ($("#flippanel3")[0].style.display != "none") {
            $("#flippanel3").slideToggle();
        }
        if ($("#flippanel4")[0].style.display != "none") {
            $("#flippanel4").slideToggle();
        }
        if ($("#flippanel5")[0].style.display != "none") {
            $("#flippanel5").slideToggle();
        }
        if ($("#flippanel6")[0].style.display != "none") {
            $("#flippanel6").slideToggle();
        }
        if ($("#flippanel7")[0].style.display != "none") {
            $("#flippanel7").slideToggle();
        }
        if ($("#flippanel8")[0].style.display != "none") {
            $("#flippanel8").slideToggle();
        }
    });
});
</script>

编辑: 基于评论的新代码尝试

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <div>
            <div style="position: relative; left: 20%;" class='div-toggle' id='flippy'>
                click me1
            </div>
            <div style="position: relative; left: 20%;" class='div-toggle' id='flippy2'>
                click me2
            </div>
            <div style="position: relative; left: 20%;" class='div-toggle' id='flippy3'>
                click me3
            </div>
        </div>


<script>
    $(document).ready(function() {
      let first = localStorage.getItem('open-toggle');
      if (first) $(`#${first}`).trigger('click');
      $(".div-toggle").click(function() {
        $(".div-toggle").not(this).slideToggle("normal");
        localStorage.setItem('open-toggle', $(this).attr('id'))
      })
    })
</script>




    <script>
$("#flippanel").hide();
$("#flippanel2").hide();
$("#flippanel3").hide();

$(document).ready(function() {
    $("#flippy").click(function() {
        $("#flippanel").slideToggle("normal");
        if ($("#flippanel2")[0].style.display != "none") {
            $("#flippanel2").slideToggle();
        }
        if ($("#flippanel3")[0].style.display != "none") {
            $("#flippanel3").slideToggle();
        }
    });
});

    $(document).ready(function() {
        $("#flippy2").click(function() {
            $("#flippanel2").slideToggle("normal");
            if ($("#flippanel")[0].style.display != "none") {
                $("#flippanel").slideToggle();
            }
            if ($("#flippanel3")[0].style.display != "none") {
                $("#flippanel3").slideToggle();
            }
        });
    });

    $(document).ready(function() {
        $("#flippy3").click(function() {
            $("#flippanel3").slideToggle("normal");
            if ($("#flippanel")[0].style.display != "none") {
                $("#flippanel").slideToggle();
            }
            if ($("#flippanel2")[0].style.display != "none") {
                $("#flippanel2").slideToggle();
            }
        });
    });
</script>

【问题讨论】:

    标签: javascript local-storage refresh


    【解决方案1】:

    这个 sn-p 显示了几件事:如何根据您的规格正确打开和关闭切换开关。它还展示了如何将打开的切换存储在 localStorage 中,在页面加载和触发时找到它。这些部分已被注释掉,因为它们在 sn-p 沙箱中失败 - 但在您的代码和测试中取消注释它们。

    $(document).ready(function() {
     // let first = localStorage.getItem('open-toggle');
     // if (first) $(`#${first}`).trigger('click');
      $(".div-toggle").click(function() {
        $(".div-toggle").not(this).slideToggle("normal");
       // localStorage.setItem('open-toggle', $(this).attr('id'))
      })
    })
    .div-toggle {
      padding: 20px;
      text-align: center;
      background: #333;
      color: #fff;
      margin: 5px;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div>
      <div class='div-toggle' id='flippy1'>
        click me
      </div>
    
      <div class='div-toggle' id='flippy2'>
        click me
      </div>
    
      <div class='div-toggle' id='flippy3'>
        click me
      </div>
    </div>

    【讨论】:

    • 不幸的是,它对我不起作用。我将添加我的新代码的编辑,但它对我不起作用。我开始学习小型 javascript 课程,所以我可以更好地理解这一点,但我快到最后期限了,而且我没有达到我需要的速度。我也在寻找两个单独的按钮,每个按钮在按下时显示其下方按钮文本的唯一性,另一个按钮文本相同。当按下一个时,它只收回所有其他文本的文本,然后显示自己的文本,同时具有本地存储功能。我什至不确定现在是否可行。
    猜你喜欢
    • 2017-08-03
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多