Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 从选择框中选择选项时更改PHP变量_Html_Css - Fatal编程技术网

Html 从选择框中选择选项时更改PHP变量

Html 从选择框中选择选项时更改PHP变量,html,css,Html,Css,基本上,我想做的是当用户从选择框中选择他们想要的样式表时,更改样式表。为此,将有一个名为$\u SESSION['style']的变量。在选择框中单击变量时,更改变量的最佳方法是什么?(无需单击提交按钮)。是否可以在不重新加载整个页面的情况下更改样式表 谢谢!:) 是,您可以在更新选择框时动态插入CSS文件 <select onchange="changecss(this.value);"> ... </select> <script> function c

基本上,我想做的是当用户从选择框中选择他们想要的样式表时,更改样式表。为此,将有一个名为$\u SESSION['style']的变量。在选择框中单击变量时,更改变量的最佳方法是什么?(无需单击提交按钮)。是否可以在不重新加载整个页面的情况下更改样式表


谢谢!:)

是,您可以在更新选择框时动态插入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”)获取文件名
但是,这可能会带来太多的开销*。也许你应该考虑将样式表文件名硬编码到JavaScript中。< /P> *)如果您使用的是像jQuery或MooTools这样的javascript框架,那么这些东西可以很容易地实现



编辑:我刚刚认识到,你有一个项目选择框。在本例中,您肯定希望使用第一个选项:通过PHP创建selectbox,例如使用样式表的文件名作为值。当发生
onSelectedIndexChanged
时,您可以使用javascript来更改样式表。

PHP是一种服务器端语言,因此如果您希望在使用选择框时(立即)更改样式表,请使用javascript。这里有一个非常好的解决方案:我很抱歉在我的问题中没有提到任何关于使用javaScript的内容,但实际上这就是我的想法。我对javaScript非常陌生,因此我完全迷路了。我一直在阅读其他人提出的很多问题,我只是不知道从哪里开始(我似乎没有什么办法!)@Laia你在使用javascript框架吗?这可以帮助您更轻松地开始,因为您不必为不同浏览器解释代码的方式而烦恼。