saveHTML()保存2份

时间:2011-03-17 18:56:06

标签: php css

我有一个动态的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与包含上一代码的文件相同。

你知道这是什么问题吗?

1 个答案:

答案 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 ?>" /> 
相关问题