【问题标题】:Cannot access input dom variable in HTML无法访问 HTML 中的输入 dom 变量
【发布时间】:2014-07-02 23:42:45
【问题描述】:

我有这个 HTML 文档(test1.html):

<!DOCTYPE html>
<html>
<body>

First name: <input type="text" id="firstname" name="firstname" value="VALUE123"><br>

<?php
echo "Hello<br>";
echo "document.getElementById('firstname').value" ;
?>

</body>
</html>

输出为:

First name: VALUE123

Hello

document.getElementById('firstname').value    <=====================

如何更正代码让输出的最后一行显示VALUE123而不是变量名本身?

我必须使用 PHP(没有 Javascript),我需要在 PHP 中使用 firstname 变量设置cookie()。

【问题讨论】:

  • 你想在
  • 我不确定您要做什么,但您的 javascript 需要在 &lt;script&gt; 标记中
  • 你不能做你想做的事。 PHP 在服务器上执行,甚至在客户端看到您的 JavaScript 之前。
  • 我更新了我的答案。没有使用js。
  • 我认为这应该可以得到值 document.getElementById('firstname').value;' ; ?> 获得值后,您可以写入 cookie。如果您仍然无法获得价值,请告诉我。

标签: php html dom getelementbyid


【解决方案1】:
<?php
/*
  The PHP setcookie() function sends an HTTP cookie to a client.
  Syntax: setcookie(name,value,expire,path,domain,secure)
  Only name and value are requiered
*/

  if ( isset ($_POST['firstname']) )
  {  // Client did send (an other) firstname.
     $fnValue = $_POST['firstname'];
     $expire = time()+60*60*24*3; // 60s 60m 24h 3d
     setcookie('firstname',$fnValue,$expire);
  }
  else
  {
     if (isset($_COOKIE['firstname']))
         $fnValue = $_COOKIE['firstname'];
     else
         $fnValue = "";
  }
?>

<!DOCTYPE html>
<html>
<head>
</head>
<body>

    <form method="POST">
        First name: <input type="text" id="firstname" name="firstname"><br>
        <input type="submit" value="send">
    </form>

   <?php
   if ( strlen($fnValue) > 0 )
   {
       echo "Hello<br>";
       echo $fnValue;
   }
   ?>

</body>
</html>

【讨论】:

    【解决方案2】:
    1. 如果您尝试打印 input 的值,那么您不需要 PHP。它可以通过 JavaScript 来完成。

    2. 很明显你的脚本不能工作,因为 PHP 是服务器端的,不能打印 DOM 元素。你正在尝试打印没有&lt;script&gt; 标签的javascript语法

    【讨论】:

      【解决方案3】:

      您不能像这样访问 JavaScript 变量。如果要设置 cookie,请从 js 中进行,有现成的工具可以做到这一点。在 Google 中查找任何“setcookie JavaScript”。但我认为您还需要了解服务器端发生了什么以及客户端发生了什么。要详细解释这一点,需要的不仅仅是答案。

      【讨论】:

        【解决方案4】:

        您正试图通过 PHP 访问 DOM 元素的值。除非您向服务器发出 POST 或 GET 请求,否则这是不可能的,服务器会处理数据并将其作为响应发送回您的客户端。

        与 JavaScript 不同,PHP 无法看到页面本身发生的事情,除非您先将其发送到服务器。

        【讨论】:

        • 甚至没有。 OP 正在尝试在服务器上由 php 构建页面时执行客户端 javascript。
        【解决方案5】:

        我怀疑你想要达到的目标是这样的:

        <!DOCTYPE html>
        <html>
        <body>
        <form method="POST">
        First name: <input type="text" name="firstname" value="VALUE123"><br> 
        <input type="submit" value="send"/>
        </form>
        <?php
        echo "Hello<br>";
        echo $_POST['firstname']";
        ?>
        
        </body>
        </html>
        

        将服务器端 (php) 视为有点像构建一个火车组

        和客户端(javascript / html /css)就像玩它一样:)

        如果您想添加更多曲目或更改布局,您可以。但是您必须先停止使用它并返回构建阶段。或者在 php 的情况下,根据您提供的数据构建一个全新的轨道。

        可以在运行时修改实时布局。您必须为此阅读 ajax :)

        【讨论】:

        • 我需要使用php设置cookie,使用firstname变量,我不想使用js。
        【解决方案6】:

        document.getElementById('firstname').value 这行是javascript,不能这样用。

        如果你需要像以前一样在 html 中打印,你可以使用一点 jquery,可能是这样的:

        <!DOCTYPE html>
        <html>
        <body>
        
        First name: <input type="text" id="firstname" name="firstname" value="VALUE123"><br>
        
        <?php
        echo "Hello<br>";
        ?>
        
        <span id="showName"></span>
        
        </body>
        <script>
           $('#showName').text($('#firstname').attr('value'));
        </script>
        </html>
        

        【讨论】:

          【解决方案7】:

          在 document.getelement 行周围放置一个 SCRIPT 标签。它现在被认为是html。试试

          <script>
          document.write(document.getElementById("yourfield").value);
          </script>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-09-22
            • 1970-01-01
            • 2017-11-21
            • 2016-07-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多