addEventListener 不适用于切换按钮

马丁

我正在Flask 中开发一项功能,可以在深色和浅色主题之间切换。我在单独的文件中使用 Flask、CSS 和 Javascript。单击切换按钮时,css 样式表不会更改。

application
├── static
│   ├── css
│   |   ├── base-theme.css
│   |   ├── dark-theme.css
│   └── js
│       ├── switch_themes.js
├── templates
│   ├── base.html

基本文件

!doctype html>

<html lang="en">

<head>
    <meta charset="utf-8">
    <title>Application</title>
    <meta name="description" content="Application">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="{{ url_for('static', filename='css/base-theme.css') }}" id="switch_theme">
    <script type="text/javascript" src="{{ url_for('static', filename='js/switch_themes.js') }}"></script>
</head>

<body>
    <div class="topnav">
        <table class="topnav_right">
            <tbody>
                <tr>
                    <td>
                        <div class="topnav_theme">
                            <table>
                                <tbody>
                                    <tr>
                                        <td><a class="theme" href="/">THEME</a></td>
                                    </tr>
                                </tbody>
                            </table>
                        </div>
                    </td>
                    <td>
                        <div class="topnav_mode">
                            <table>
                                <tbody>
                                    <tr>
                                        <td>
                                            <button id="btn-toggle">
                                                <label class="switch">
                                                    <input type="checkbox">
                                                    <span class="slider"></span>
                                                </label>
                                            </button>
                                        </td>
                                    </tr>
                                </tbody>
                            </table>
                        </div>
                </tr>
                </td>
            </tbody>
        </table>
    </div>

    {% block body %}{% endblock %}
</body>

</html>

switch_themes.js

window.onload = function () {
    const toggle = document.getElementById("btn-toggle");
    const theme = document.getElementById("switch_theme");

    toggle.addEventListener("click", function () {
        if (theme.getAttribute("href") == "/static/css/base-theme.css") {
            theme.href = "/static/css/dark-theme.css";
        } else {
            theme.href = "/static/css/base-theme.css";
        }
    });
}

该应用程序可以正常工作(浏览器控制台中也没有错误),但是当单击切换按钮 (btn-toggle) 时主题不会切换。

最好的祝福,

马丁

马丁

我解决了这个问题。

它实际上是有效的,但是<button>由于<label><span>标签,它是多余的并且单击按钮的区域太小我已经更改了下面的代码,现在它可以工作了:

<td>
    <label class="switch">
        <input type="checkbox" id="btn-toggle">
        <span class="slider"></span>
    </label>
</td>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

JavaScript addEventListener不适用于移动切换菜单

addEventListener 不适用于初始渲染

addEventListener不适用于多个链接

Javascript(addEventListener) 不适用于 iOS

必需的属性不适用于 addEventListener?

切换框不适用于按钮,但适用于段落

JavaScript AddEventListener 不适用于所有容器

为什么加载事件的addEventListener不适用于div?

JavaScript addEventListener不适用于特定元素

getEventsByClassName的addEventListener不适用于多个元素

addEventListener不适用于内容的动态加载

多个元素的AddEventListener不适用于“焦点”事件

getElementById 和 addEventListener 不适用于我的 HTML

addEventListener 不适用于 document.createElement 元素

在 2 个布局之间切换的按钮不适用于 javascript

切换按钮不适用于AngularJS和Angular ui Bootsrap

样式不适用于有角度的侧边栏切换按钮

切换按钮首次不适用于导航抽屉

导航栏切换按钮不适用于toggleClass(“ active”);

jQuery 切换不适用于 next() 函数

数据切换崩溃不适用于li

单击切换适用于 Chrome 和 Safari 但不适用于 Firefox?

js addeventlistener使用Dragenter的捕获不适用于输入元素

一次:与addEventListener为true不适用于IE11或Edge

Javascript-removeEventListener不适用于数组,来自先前添加了for循环的addEventListener

输入开始处没有空格不适用于addEventListener

addEventListener 不适用于通过 d3js 的 append 方法添加的元素

如何在父 div 中使用 addEventListener 按钮切换 div?

在循环中添加addEventListener()仅适用于最后一个按钮