基本上,我想要做的是在用户从选择框中选择一个选项时更改样式表。要做到这一点,会有一个名为$ _SESSION ['style']的变量。从选择框中单击时更改变量的最佳方法是什么? (无需点击提交按钮)。是否有可能在不重新加载整个页面的情况下更改样式表?从选择框中选择选项时更改PHP变量
Thanksss! :)
基本上,我想要做的是在用户从选择框中选择一个选项时更改样式表。要做到这一点,会有一个名为$ _SESSION ['style']的变量。从选择框中单击时更改变量的最佳方法是什么? (无需点击提交按钮)。是否有可能在不重新加载整个页面的情况下更改样式表?从选择框中选择选项时更改PHP变量
Thanksss! :)
是的,你可以动态注入一个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>
由于PHP是不能在用户的浏览器(没有“推”)更新数据的服务器端语言,你需要客户端脚本来更改样式表,而不必重新加载页面。使用javascript可以更改样式表。因为你的样式表文件名存储在(服务器端)会话变量,你有2种选择:
但是,这可能是太多的开销*。也许你应该考虑将样式表文件名硬编码到javascript中。
*)如果你正在使用像jQuery或MooTools的这样的事情一个JavaScript框架,可以很容易地实现......
编辑:我刚刚认识到,你有项目的选择框。在这种情况下,您肯定希望使用第一个选项:通过PHP创建选择框,例如使用样式表的文件名作为值。当发生onSelectedIndexChanged
时,您可以使用javascript更改样式表。
PHP是一种服务器端语言,所以如果您希望在使用选择框(立即)时真正改变它,请使用Javascript。这是一个SO解决方案:http://stackoverflow.com/questions/14292997/changing-style-sheet-javascript –