0

在使用 POST 方法提交表单后,我无法使用 javascript 更改 HTML 文档中的内容。我需要将我的 HTML 文档中的 div 的颜色更改为黄色,我已经完成了,但问题是在它更改为黄色之后,HTML 网站在导航器中刷新,然后它恢复正常(白色)。它有点闪烁黄色,然后又变成白色。

这是我的 HTML 代码:

<form action="" method="post" onSubmit="return changeColor()">
.
.
.
<div id="divColor">
.
.

这是我更改 div 颜色的 javascript 代码:

function changeColor()
{
    var div = document.getElementById("courselist");
    div.style.backgroundColor='yellow';
}

我需要这样做,因为这是作业的一部分,所以我不能用 CSS 改变颜色,到目前为止我们只能使用 HTML 和 javascript。如果有人认为我想作弊,这不是全部任务,这是我坚持的部分。在导航器在 POST 方法之后刷新 HTML 网站后,我无法使 div 保持黄色。

谢谢!

4

4 回答 4

1

当您提交表单时,它会转到 中指定的下一页action=""。因此,当您单击提交按钮时,它会更改颜色,然后加载下一页。由于缺少 中指定的页面action="",它正在重新加载同一页面,因此它变成黄色,然后刷新。

这可能是您正在寻找的。您使用 AJAX 将信息提交到 POST,而无需实际加载不同的页面。

于 2012-07-26T05:40:13.263 回答
1

有三种方法可以实现您的目标。

  1. 使用ajax提交信息,使页面不刷新,保持状态。或者你可以像下面这样,和ajax的效果一样:

    <iframe name="myIfr" style="display:none"></iframe> <form method="post" target="myIfr">...</form>

  2. 改变“”的“action”,在url中记录状态,像这样:“mypage.php?status=1”,页面刷新后,可以从url中获取状态。

  3. 使用 Cookie。我认为这不是一个好主意。

于 2012-07-26T07:01:18.857 回答
0

您可以将其分开,以便仅在满足其他条件时才打印出表单。使用一个名为 $output_form 的变量(或任何您喜欢的名称)并将其设置为 false,然后让代码在发送 POST 之前打印出一件事,并在发送 POST 之后打印出一些内容。这是我不久前完成的一些代码的真正精简版本,可能会帮助您了解您可以做什么:

<?php

if(isset($_POST['Submit'])){

{SOME CODE HERE}

        $output_form = true;
    }

}
else{
    $output_form = true;
}

if (!$output_form){
    {SOME CODE HERE}
}
else{
    {OTHER STUFF HERE}
    $output_form = true;

    mysqli_close($dbc);
}
}

if ($output_form){
?>


<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
于 2012-07-26T05:45:17.630 回答
0

大家好,我终于解决了我的问题。我必须在我的 changeColor() 函数中返回 false,网站会改变颜色,但不会自行刷新。我喜欢使用 cookie 的方法。

感谢您的帮助,我无法使用 AJAX 或 PHP,因为他们还没有教我们。

于 2012-07-26T14:32:19.443 回答