尝试使用“ 按钮切换主题”的各种答案,我有代码,但无法正常工作
我的base.html:
<?php include('process_form.php'); ?>
<form method="POST" action="<?php $_SERVER['PHP_SELF']; ?>">
<div class="form-row">
<div class="col form-group">
<label>Primeiro nome</label>
<input type="text" class="form-control" title = "Inserir nome" name="firstname" value="<?php echo $firstname ?>">
<span class="error"><?php echo $firstnameErr ?></span>
我的css.html:
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no">
...
{% include 'base/css.html' %}
{% block base_head %}
{% endblock %}
</head>
<body>
...
{% include 'base/js.html' %}
{% block javascript %}
{% endblock %}
</body>
当我仅使用'css / dark.css'(未声明'css / light.css'链接)时,我的页面呈暗色;如果我更改为“ css / light.css”(未声明“ css / dark.css”),则页面将呈现浅色主题。
我的js.html:
<!-- custom styling -->
<link rel="stylesheet"
href="{% static 'css/base.css' %}">
<!-- light styling -->
<link rel="stylesheet alternate"
id="theme"
href="{% static 'css/light.css' %}">
<!-- dark styling -->
<link rel="stylesheet alternate"
id="theme"
href="{% static 'css/dark.css' %}">
toggle_theme.js说:
...
<script src="{% static 'js/ecommerce.sales.js' %}"></script>
<!-- toggle theme js -->
<script src="{% static 'js/toggle_theme.js' %}"></script>
我要在导航栏中使用的按钮:
console.log('now what') // works at django runserver first run
document.getElementById('toggle-theme').onClick = function() {
console.log('js works'); // not working, js is not run on click
if (document.getElementById('theme').href == "{% static 'css/dark.css' %}") {
document.getElementById('theme').href = "{% static 'css/light.css' %}";
} else {
document.getElementById('theme').href = "{% static 'css/dark.css' %}";
}
}
我做了通常的django东西,“ python manage.py collectstatic”和Ctrl-F5来刷新开发浏览器。我在这里想念什么?
谢谢您的帮助
编辑: 尽管以上指向“ 在两个样式表之间切换”的链接确实解决了我的问题,但它并不完整,因为在刷新时,主题已设置为默认主题。我的完整解决方案是(黑暗是我的默认主题):
<!-- todo: toggle theme -->
<div class="nav-item mx-auto my-auto">
<!-- href="#" -->
<!-- <a class="nav-link dark-theme" -->
<a class="nav-link"
id="toggle-theme"
title="toggle theme">
<!-- id="toggle-theme" -->
<i class="fas fa-lg fa-square"
aria-hidden="true">
<!-- <script src="{% static 'js/toggle_theme.js' %}"></script> -->
</i> </a>
</div>
如果设置了浅色主题,我确实会在刷新(F5)时遇到一些页面闪烁,但是现在我必须忍受这个问题。黑暗主题的作品不会闪烁。
最诚挚的问候,
西蒙 爱妮娅
答案 0 :(得分:0)
您是否尝试过将document.getElementById('toggle-theme').onClick = function() {
更改为document.getElementById('toggle-theme').onclick = function() {
?
不能保证这是唯一的问题,但是onclick应该全部小写,并且如果未识别出初始点击,则可能是您的问题。
答案 1 :(得分:0)
好吧,当我刷新页面并查看页面源代码时,我得到:
<!-- light styling -->
<link rel="stylesheet"
id="theme"
href="/static/css/light.css">
<!-- dark styling -->
<link rel="stylesheet"
id="theme"
href="/static/css/dark.css">
如果检查元素,则会得到相同的代码。然后单击切换按钮,然后查看页面源代码,代码保持不变,但是当我检查元素时,我得到:
<!-- light styling -->
<link rel="stylesheet"
id="theme"
href="/static/css/dark.css">
<!-- dark styling -->
<link rel="stylesheet"
id="theme"
href="/static/css/dark.css">
href均为“ /static/css/dark.css”。 因此,该代码可以正常工作,但不符合预期。这告诉我这不是要使用的代码。将继续我的搜索。