2

所以我有 2 个 css 文件 - light.css 和 dark.css。我在页面上有一个按钮,可以<link>在这两个 css 文件之间切换元素的“href”属性。

现在,我有一个<div>默认情况下从 light.css 获取背景样式的。将“href”属性更改为“dark.css”后,div 不会采用 dark.css 中提供的新样式代码...

任何想法为什么?

== 编辑:添加了代码片段...

JS改变<link>

var nightMode = false;
var theme = document.querySelector('#theme');
// Where <link id="theme" style="text/css" rel="stylesheet" href="light.css">

function toggleNight()
{
    if (!nightMode)
    {
        setTimeout("theme.setAttribute('href', '_css/dark.css')", 400);
        nightMode = true;
    }
    else
    {
        setTimeout("theme.setAttribute('href', '_css/light.css')", 400);
        nightMode = false;  
    }
}

除此之外,CSS 文件如下所示:

// light.css
div{background:#ddd;}

// dark.css
div{background:#333;}
4

2 回答 2

1

我从这个网站更改了一些来源:使用 Javascript 更改外部 CSS 文件

我认为这是您希望执行此操作的代码:

<!DOCTYPE html>
<html>
  <head>
    <title>Changing CSS extern file using only JavaScript</title>
    <link id="changeCSS" rel="stylesheet" type="text/css" href="positive.css"/>
    <script type="text/javascript">
      function changeCSS() {

        var oldlink = document.getElementById("changeCSS");
        var cssFile;

        if(oldlink.getAttribute('href') === 'positive.css') {
          cssFile = 'negative.css';
        }
        else {
          cssFile = 'positive.css';
        }

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

        document.getElementsByTagName("head").item(0).replaceChild(newlink, oldlink);
      }
    </script>
  </head>
  <body>
    <button onclick="changeCSS();">change</button>
    <div class="box">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</div>
  </body>
</html>

我希望这就是你要找的。如果您不理解代码,请询问。

于 2012-08-10T08:49:50.573 回答
0

您的 jQuery/javascript 代码显然是错误的,请尝试以下操作:

$('button').click(function(){
  if ($('link[href*="temp1"]').length > 0)
      $("link").attr('href',"http://ajthomas.co.uk/temp2.css");
  else
      $("link").attr('href',"http://ajthomas.co.uk/temp1.css");
});

这是一个小提琴 - http://jsfiddle.net/Xtjv2/

更新

只是为了排除它,尝试改变你的CSS:

// light.css
div{background:#ddd;}

// dark.css
div{background:#333;}

至:

// light.css
div{background-color:#ddd;}

// dark.css
div{background-color:#333;}
于 2012-08-10T08:27:54.213 回答