Html 从选择框中选择选项时更改PHP变量
基本上,我想做的是当用户从选择框中选择他们想要的样式表时,更改样式表。为此,将有一个名为$\u SESSION['style']的变量。在选择框中单击变量时,更改变量的最佳方法是什么?(无需单击提交按钮)。是否可以在不重新加载整个页面的情况下更改样式表Html 从选择框中选择选项时更改PHP变量,html,css,Html,Css,基本上,我想做的是当用户从选择框中选择他们想要的样式表时,更改样式表。为此,将有一个名为$\u SESSION['style']的变量。在选择框中单击变量时,更改变量的最佳方法是什么?(无需单击提交按钮)。是否可以在不重新加载整个页面的情况下更改样式表 谢谢!:) 是,您可以在更新选择框时动态插入CSS文件 <select onchange="changecss(this.value);"> ... </select> <script> function c
谢谢!:) 是,您可以在更新选择框时动态插入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(值){
//根据该值,在此处选择样式表
var cssname='pick your own css file';
csl=document.createElement('link');
setAttribute('rel','stylesheet');
setAttribute('type','text/css');
csl.setAttribute('href',cssname);
document.getElementsByTagName(“head”).item(0).appendChild(csl);
}
编辑:
我见过直接更改当前css包含的src值的代码。这在IE的某些版本中不起作用,因为浏览器没有收到DOM更改的“通知”,因此您的页面不会受到影响。在DOM中插入新的CSS节点更可靠
使用此选项,您可以在一行中动态加载CSS文件:
<script src="http://www.antradar.com/nano.js"></script>
<script>
ajxcss(self.cssloader,'newcss.css');
</script>
ajxcss(self.cssloader,'newcss.css');
由于PHP是一种服务器端语言,无法更新用户浏览器中的数据(无“推送”),因此需要一个客户端脚本来更改样式表,而无需重新加载页面。使用javascript可以更改样式表。由于样式表文件名存储在(服务器端)会话变量中,因此有2个选项:
- 将文件名呈现到站点中(例如,通过将其作为变量回显到javascript代码中),以便客户端脚本可以使用它
- 使用来自客户端脚本的ajax调用,从输出会话变量的PHP脚本(“pull”)获取文件名
编辑:我刚刚认识到,你有一个项目选择框。在本例中,您肯定希望使用第一个选项:通过PHP创建selectbox,例如使用样式表的文件名作为值。当发生
onSelectedIndexChanged
时,您可以使用javascript来更改样式表。PHP是一种服务器端语言,因此如果您希望在使用选择框时(立即)更改样式表,请使用javascript。这里有一个非常好的解决方案:我很抱歉在我的问题中没有提到任何关于使用javaScript的内容,但实际上这就是我的想法。我对javaScript非常陌生,因此我完全迷路了。我一直在阅读其他人提出的很多问题,我只是不知道从哪里开始(我似乎没有什么办法!)@Laia你在使用javascript框架吗?这可以帮助您更轻松地开始,因为您不必为不同浏览器解释代码的方式而烦恼。