0

好的,所以我已经阅读了一些教程,以及一本关于 HTML5 的书,其中谈到了很多关于表单控件以及它们发生了多大变化的内容。因此,我尝试使用此示例代码测试代码。我想要做的是将表单数据(特别是某人想要倒计时的事件名称的文本字段和事件日期和时间的日期时间控件)发送到 JavaScript 的另一个 HTML5 文件要解析的文件。问题?数据未发送到指定为表单操作的文件!

这是 HTML 文件中的代码,其中包含表单 (countdown_form.html):

<!DOCTYPE html>
<html>
  <head>
    <title>Collecting countdown data</title>
  </head>
  <body>
    <form method="post" action="countdown.html">
      <table border="1" cellpadding="5">
        <tr>
          <td>Name of event to count down to</td>
          <td><input name="event" type="text"></td>
        </tr>
        <tr>
          <td>Date of event to count down to</td>
          <td><input name="date" type="datetime"></td>
        </tr>
      </table>
      <input name="Submit" type="submit">
    </form>
  </body>
</html>

这是我试图将表单数据发送到 (countdown.html) 的 HTML 文件中的代码:

<!DOCTYPE html>
<html>
  <head>
    <title>
      <script type="text/javascript">
      document.write("Countdown to " + input.text);
      </script>
    </title>
  </head>
  <body>
    <table border="1" cellpadding="5">
      <tr>
        <td>
          <script type="text/javascript" language="JavaScript">
            <!--
            document.write("Time left until " + input.text);
            //-->
          </script>
        </td>
      </tr>
      <tr>
        <td>
          <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
          <!--

          dateFuture = new Date(input.date);

          function GetCount(){

             dateNow = new Date();                                                                        //grab current date
             amount = dateFuture.getTime() - dateNow.getTime();                //calc milliseconds between dates
             delete dateNow;

             // time is already past
             if(amount < 0){
                document.getElementById('countbox').innerHTML="Now!";
             }
             // date is still good
             else{
                days=0;hours=0;mins=0;secs=0;out="";

                amount = Math.floor(amount/1000);//kill the "milliseconds" so just secs

                days=Math.floor(amount/86400);//days
                amount=amount%86400;

                hours=Math.floor(amount/3600);//hours
                amount=amount%3600;

                mins=Math.floor(amount/60);//minutes
                amount=amount%60;

                secs=Math.floor(amount);//seconds

                if(days != 0){out += days +" day"+((days!=1)?"s":"")+", ";}
                if(days != 0 || hours != 0){out += hours +" hour"+((hours!=1)?"s":"")+", ";}
                if(days != 0 || hours != 0 || mins != 0){out += mins +" minute"+((mins!=1)?"s":"")+", ";}
                out += secs +" seconds";
                document.getElementById('countbox').innerHTML=out;

                setTimeout("GetCount()", 1000);
             }
          }

          window.onload=function(){ 
             GetCount(); 
          }; //call when everything has loaded
          //-->
          </script>
          <div id="countbox"></div>
        </td>
      </tr>
    </table>
  </body>
</html>

我想知道的是:

  1. 一个 HTML 文档直接将表单数据发送到另一个 HTML 文档是否合法,
  2. 如果合法,为什么 <input> 标签中的数据没有被 action 文档中的 input.text 和 input.datetime JavaScript 变量解析?

还,

  1. 在 <title> 标签中包含 JavaScript 代码是否合法?
  2. 如果合法,为什么谷歌浏览器不解析代码?

如果这两件事都不合法,您将如何使用表单数据:

  1. 文档的标题。
  2. 作为 JavaScript 解析的数据?
4

1 回答 1

4

如果你想这样做,我认为你最好的办法是使用method=get而不是 method=post。这样,您的目标页面中的 Javascript 将能够看到参数。JS 看不到 post 参数(您需要运行 PHP、ASP.NET 等的 Web 服务器来访问这些参数)。

要明确回答您的问题:

  1. 发送是合法的,但是浏览器看不到目标页面的参数。
  2. 不,拥有 Javascript 是不合法的。但是,您可以使用以下方法从 Javascript 设置标题: document.title = "Some text";
  3. 使用服务器端脚本语言,或者如果您必须在客户端执行此操作,请在表单中使用 method="get",并使用window.location.search解析目标页面上的参数。
于 2012-05-30T04:37:30.253 回答