基本上我想要做的是当用户从选择框中选择他们想要的样式表时更改样式表。要做到这一点,会有一个名为$ _SESSION ['style']的变量。从选择框中单击变量时更改变量的最佳方法是什么? (不单击提交按钮)。是否可以在不重新加载整个页面的情况下更改样式表?
Thanksss! :)
答案 0 :(得分:0)
是的,您可以在更新选择框时动态注入CSS文件。
<select onchange="changecss(this.value);">
...
</select>
<script>
function changecss(value){
//based on the value, pick a style sheet here
var cssname='pick your own css file';
csl=document.createElement('link');
csl.setAttribute('rel','stylesheet');
csl.setAttribute('type','text/css');
csl.setAttribute('href',cssname);
document.getElementsByTagName("head").item(0).appendChild(csl);
}
</script>
编辑:
我见过直接更改当前css包含的src值的代码。这在某些版本的IE中不起作用,因为浏览器没有“通知”DOM更改,因此您的页面不受影响。在DOM中插入新的CSS节点可以更可靠地工作。
使用此Ajax wrapper,您可以在一行中动态加载CSS文件:
<script src="http://www.antradar.com/nano.js"></script>
<script>
ajxcss(self.cssloader,'newcss.css');
</script>
答案 1 :(得分:0)
由于PHP是一种服务器端语言,无法更新用户浏览器中的数据(无“推送”),因此您需要一个客户端脚本来更改样式表而无需重新加载页面。使用javascript可以更改样式表。因为样式表文件名存储在(服务器端)会话变量中,所以您有两个选项:
然而,这可能是太多开销*。也许您应该考虑将样式表文件名硬编码到javascript中。
*)如果您使用的是像jQuery或MooTools这样的javascript框架,这样的东西可以轻松实现......
编辑:我刚认识到,你有一个项目选择框。在这种情况下,您肯定希望使用第一个选项:通过PHP创建选择框,例如使用样式表的文件名作为值。当onSelectedIndexChanged
发生时,您可以使用javascript更改样式表。