我有一个动态的PHP页面,在按钮点击时更改链接到它的css文件,我已经完成了将所选的css文件保存到会话,因此用户将在其会话期间始终拥有所选的css文件。
我的问题是,在编辑链接html元素中的href元素后 - 为了链接新选择的文件 - 我使用saveHTML()函数来保存编辑后的版本,输出是灾难,我有两个副本页面上的所有元素,我的意思是两个横幅,两个提交按钮,一切都重复!!
我的代码如下:
<!--CSS Theme-->
<link id = "theme" rel="stylesheet" type="text/css" href="White.css" />
<!--Change Theme-->
<?php
if(isSet($_GET["Theme"]))
{
$th = $_GET["Theme"];
$_SESSION["Theme"] = $th;
}
else if(isSet($_SESSION["Theme"]))
{
$th = $_SESSION["Theme"];
}
else
{
$th = 'White.css';
}
switch ($th) {
case 'Light Blue':
$theme_file = 'LightBlue.css';
break;
default:
$theme_file = 'White.css';
}
$dom = new DOMDocument;
@$dom->loadHTMLFile('HomeWork.php');
$node= $dom->getElementById('theme') ;
$node->setAttribute('href', $theme_file);
echo $dom->saveHTML();
?>
EDIT HomeWork.php与包含上一代码的文件相同。
你知道这是什么问题吗?
答案 0 :(得分:1)
如果homework.php与您展示的文件完全相同,那么内容就不足为奇了。执行homework.php时,将打印出在DOM代码之前出现的任何HTML。然后执行DOM,再次加载相同的内容,更改属性并再次打印整个代码。
你不需要DOM。只需计算您要使用的CSS文件,就像您已经使用的那样,而不是您的DOM代码,回显文件名和适当的位置,例如
<?php
// code to calculate from $_SESSION which filename to use
// store in $fileName variable
?>
// HTML Stuff here
// insert the variable into the HTML
<link id="theme" rel="stylesheet" type="text/css" href="<?php echo $fileName ?>" />