我对这一点非常陌生,在学习html/css/JavaScript的同时,我正在try 一个小项目.所以,如果这是一个相当明显的问题/答案,那么抱歉.

基本上,我使用这个设置使我的(非常简单)网站具有黑暗模式:

CSS

:root{
    --primary-color: #ffffff;
    --secondary-color: #1d1d1d;
}
.dark-theme{
    --primary-color: #212121;
    --secondary-color: #e0e0e0;
}

然后我对所有背景/文本 colored颜色 使用原色/原色.然后,

脚本

var icon = document.getElementById("icon");

   icon.onclick = function (){
        document.body.classList.toggle("dark-theme");
       if(document.body.classList.contains("dark-theme")){
          icon.src = "/images/sun-2-svgrepo-com.png";
     }else{
        icon.src = "/images/moon-stars-svgrepo-com.png";
   }
}

当有人点击我标记为"图标"的月亮图像时, colored颜色 就会相反,"图标"就会变成太阳图像.这非常适合我的黑暗模式!

我try 在下面插入相同的"图标"过程,看看它是否也会在onClick时发生.

var icon = document.getElementById("icon");

    var icon = document.getElementById("icon");

    icon.onclick = function (){
        document.body.classList.toggle("dark-theme");
        if(document.body.classList.contains("dark-theme")){
            icon.src = "/images/sun-2-svgrepo-com.png";
            icon2.src = "/images/lightmode.png";
        }else{
            icon.src = "/images/moon-stars-svgrepo-com.png";
            icon2.src = "/images/darkmode.png";
        }
}

它没有起作用.

我的问题是,有没有办法将我的其他图像(png,用作图标)从亮模式图像更改为暗模式图像.基本上,当月亮图像通过点击而变成太阳图像时,我如何才能让我的其他图像也切换?

谢谢!

推荐答案

您需要将第二个图标名称从icon更改为其他名称,例如icon-2,因为在HTML文档中不能有多个元素具有相同的id.

应该是这样的

var icon = document.getElementById("icon");
var icon2 = document.getElementById("icon-2");

 icon.onclick = function (){
        document.body.classList.toggle("dark-theme");
        if(document.body.classList.contains("dark-theme")){
            icon.src = "/images/sun-2-svgrepo-com.png";
            icon2.src = "/images/lightmode.png";
        }else{
            icon.src = "/images/moon-stars-svgrepo-com.png";
            icon2.src = "/images/darkmode.png";
        }
 }

您的html元素还应该反映

 <img id="icon-2" src="" alt=""/>

如果您在CSS中使用class而不是id,则仅允许对多个元素使用单一名称

Javascript相关问答推荐

为什么新的Promises会在不需要的情况下被用来等待?

订阅操作顺序

单击按钮后未清除 Select

reaction如何在不使用符号的情况下允许多行返回?

reaction useEffect KeyDown for each 条目配音输出

使用json文件字符串来enum显示类型字符串无法按照计算的enum成员值的要求分配给类型号

Angular中计算信号和getter的区别

React Code不在装载上渲染数据,但在渲染上工作

使用i18next在React中不重新加载翻译动态数据的问题

康威的生活游戏规则在我的Javascript版本中不起作用.''我做错了什么?

如何根据当前打开的BottomTab Screeb动态加载React组件?

如何将Cookie从服务器发送到用户浏览器

如何将多维数组插入到另一个多维数组中?

是什么导致了这种奇怪的水平间距错误(?)当通过JavaScript将列表项元素追加到无序列表时,是否在按钮之间?

在浏览器中触发插入事件时检索编码值的能力

在Matter.js中添加从点A到另一个约束的约束

如何在FastAPI中为通过file:/URL加载的本地HTML文件启用CORS?

OnClick更改Json数组JSX中的图像源

将相关数据组合到两个不同的数组中

有没有办法通过使用不同数组中的值进行排序