因此,当用户选择表单中的下拉框到另一个时,我会尝试更改样式表。
我的代码如下。
$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文件,页面就会刷新并且不会更改样式表。
我也尝试了许多其他替代方法,他们也没有工作。但我写的这个方法似乎是更适合我需要的选择。
由于
答案 0 :(得分:1)
我认为你在PHP和Javascript之间混合
这里:
echo '<select id="style" onChange="change()">';
您需要使用PHP为联系指定name
属性 - 或者说 -
因此需要更改为:
echo '<select name="style" onChange="change()">';
答案 1 :(得分:0)
对于其他有类似问题的人,再次感谢@hassan帮助我。
我现在刚刚编辑了表单并为该函数添加了一个echo:
function showOptions() {
echo '<form id="selectStyle" action="#" method="post">';
echo '<select name="style" onChange="change()">';
echo '<option disabled selected value> -- select a style -- </option>';
global $styles;
foreach ($styles as &$value){
echo '<option value="'.$value.'">'.$value.'</option>';
}
echo '</select></form>';
}
所以我添加的行是选择样式的额外选项:
echo '<option disabled selected value> -- select a style -- </option>';
所以现在这允许我在我的两种风格之间切换。我将添加更多款式可供选择。但是在我制作其他样式文件之前需要首先使用它。
再次感谢大家的帮助和哈桑的答案:)