jquery - 如何根据背景主题替换 Logo (图像)

标签 jquery html css

我有两张不同的图片( Logo ),一张用于深色主题(它有浅色 Logo ),一张用于浅色主题(它有深色 Logo )。

用户可以自由选择深色主题或浅色主题。 但是我在更换 Logo 时遇到困难。有人可以帮我解决这个问题吗?

我的两个 .png 图像分别命名为 lightlogo.png 和 darklogo.png。当页面加载时,用户会看到深色主题的 UI。

这是我显示 Logo 的代码

<div class="nav-wrapper">
  <a href="#!" class="brand-logo">
    <image  src="../images/lightlogo.png" alt="image" id="imag"   class="hidden-xs " />
  </a>
</div>

这是我的主题代码

<div id="icon-div">
  <p>
    <i class="material-icons dp48">loop</i>
  </p>
  <div id="icon-element">
    <input type="button" id="light" value="light-theme"/>
  </div>
</div>

这是我的 js,用户可以在其中更改主题,我正在尝试为浅色背景(浅色主题)添加图像

$('#light').click(function() {
  if ($(this).val() == "light-theme") {
    $(this).val("dark-theme");
    changeCSS("styleLight.css", 0)
  }
  else {
    $(this).val("light-theme");
    changeCSS("styleDark.css", 0).attr("src" , "../images/darklogo.png");
  }
});

function changeCSS(cssFile, cssLinkIndex) {

  var oldlink = document.getElementsByTagName("link").item(cssLinkIndex);

  var newlink = document.createElement("link");
  newlink.setAttribute("rel", "stylesheet");
  newlink.setAttribute("type", "text/css");
  newlink.setAttribute("href", "/stylesheets/"+cssFile);

  document.getElementsByTagName("head").item(0).replaceChild(newlink, oldlink);
}

最佳答案

试试这个,我已经删除了 javascript 函数中的更改图像 src。

$('#light').click(function() {
  if ($(this).val() == "light-theme") {
    $(this).val("dark-theme");
    changeCSS("styleLight.css", 0)
    $('#imag').attr('src', "../images/darklogo.png");
  } else {
    $(this).val("light-theme");
    changeCSS("styleDark.css", 0)
    //.attr("src" , "../images/darklogo.png");
    $('#imag').attr('src', "../images/lightlogo.png");
  }
});

function changeCSS(cssFile, cssLinkIndex) {

   var oldlink = document.getElementsByTagName("link").item(cssLinkIndex);

   var newlink = document.createElement("link");
   newlink.setAttribute("rel", "stylesheet");
   newlink.setAttribute("type", "text/css");
   newlink.setAttribute("href", "/stylesheets/"+cssFile);

}

问题是您不能将 attr() 用于 javascript 函数。

关于jquery - 如何根据背景主题替换 Logo (图像),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48515858/

相关文章:

jquery - 1 行 2 个图像;将 1 个图像设置为另一个图像的高度父级

jQuery 移动元素类型更改后的 div

css - 在 Bootstrap 3.well 中定位相对和绝对框

javascript - 使用 JavaScript/jQuery 检测 Android 后退按钮

javascript - 简单的 CSS 过渡

php和mysql插入输入数组

javascript - JQuery 在选择更改时淡入和淡出隐藏字段

javascript - 使用 slider 更改元素样式(输入范围)

javascript - 在固定大小的 block 内显示带有圆 Angular 的任意大小的图像

javascript - 每个循环结束时做一些事情