所以我有2个css文件 - light.css和dark.css。
我在页面上有一个按钮,可以在这两个css文件之间切换<link>
元素的'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;}
答案 0 :(得分:1)
我从这个网站改变了一点来源:Changing external CSS file with Javascript。
我认为这是您希望执行此操作的代码:
<!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>
我希望这就是你所寻求的。如果您不理解代码,请询问。
答案 1 :(得分: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;}