我需要一些帮助,我做了一个样式切换器,但是我无法解决如何替换样式表的问题,此刻我的代码清空了<head>
,我只需要用它替换以前的样式表,这就是我的代码,
菜单和JavaScript
<ul id="options">
<li><a class="option" href="<?php echo base_url();?>welcome/setBackground/red">Red</a></li>
<li><a class="option" href="<?php echo base_url();?>welcome/setBackground/green">Green</a></li>
<script type="text/javascript">
$('a.option').click(function(ev) {
ev.preventDefault();
var url = $(this).attr("href");
alert(url)
$.ajax({
url : url,
type : "POST",
data : "js=true",
success : function(html) {
$('head').html(html);
}
});
});
</script>
的PHP
function setBackground() {
$data['style'] = $this->uri->segment(3);
$_COOKIE[] = setcookie("style", $data['style'], time()+(60*60*24*30), "/");
//die(print_r($_COOKIE));
if($this->input->post('js') == "true") {
//echo $data['style'];
$this->load->view('base/cssSelector', $data);
} else {
redirect(base_url().'welcome');
}
}
javascript和PHP构建的HTML
<link rel="stylesheet" href="/media/css/<?php echo $style; ?>.css" media="screen, projection" />
最佳答案
这是一个HTML页面,显示了有关如何动态添加/删除样式的示例。
<html>
<head>
<title>add/remove style</title>
<script>
function removeStyle(id){
var cs = document.getElementById(id);
cs && cs.parentNode.removeChild(cs);
}
function addStyle(css, id){
removeStyle(id);
var styleNode = document.createElement("style");
styleNode.setAttribute('type', 'text/css');
styleNode.setAttribute('id', id);
document.getElementsByTagName("head")[0].appendChild(styleNode);
if(typeof styleNode.styleSheet !=='undefined'){
styleNode.styleSheet.cssText = css; //IE
}else{
styleNode.appendChild(document.createTextNode(css));
}
}
</script>
</head>
<body>
<p>text to color</p>
<input onclick="addStyle('p{color:#900}p{background:#DEF}', 'myStyle')" type="button" value="add style" >
<input onclick="removeStyle('myStyle')" type="button" value="remove style">
</body>
</html>