【发布时间】:2018-02-13 10:27:39
【问题描述】:
所以我试图让我的样式表在用户选择表单中的下拉框时更改为不同的下拉框。
我的代码如下。
$styles = array(
"style",
"dark"
);
$style = $_POST["style"];
if (!in_array($style, $styles))
{
//we default back to the first in the array, this prevents accidental hardcoding;
$style = $styles[0];
}
$css = "/templates/streamer/css/$style.css";
if (!file_exists($css)){
//something terrible happend;
#echo "missing style $css";
}
function showOptions() {
echo '<form id="selectStyle" action="#" method="post">';
echo '<select id="style" onChange="change()">';
global $styles;
foreach ($styles as &$value){
echo '<option value="'.$value.'">'.$value.'</option>';
}
echo '</select></form>';
}
那么我的链接rel如下:
<link rel="stylesheet" href="<?php echo $css; ?>"/>
然后我调用jquery脚本:
function change() {
document.getElementById("selectStyle").submit();
}
然后我调用函数来显示表单:
<?php showOptions(); echo $css; ?>
所以我的问题是,一旦我选择“深色”css 文件,页面就会刷新并且不会更改样式表。
我还尝试了许多其他替代方法,但它们也不起作用。但是我写的这个方法似乎是更适合我需要的选择。
谢谢
【问题讨论】:
-
我需要更改样式表,你说的选项和方法不是我需要的。不过谢谢
-
表单提交后页面刷新?还是在活动之后
onChange? -
从你的 PHP 中分离你的 HTML,当你可以关闭 PHP 标记时,不需要
echo它。这样更容易阅读和理解。 -
你能证明
change()函数在做什么吗?也许问题就在那里。既然你没有提交按钮,那是我的猜测。 -
@hassan - 当我在下拉框中选择深色时,它会刷新。表单没有提交按钮。