【问题标题】:JavaScript/PHP [Show/Hide]JavaScript/PHP [显示/隐藏]
【发布时间】:2012-05-17 09:59:11
【问题描述】:

我想弄清楚如何使用 JavaScript 显示/隐藏 PHP 脚本。

JavaScript:

<script type="text/javascript">
function showhide(id){ 
    if (document.getElementById){ 
    obj = document.getElementById(id); 
    if (obj.style.display == "none"){ 
    obj.style.display = ""; 
    } else { 
     obj.style.display = "none"; 
    } 
  }
} 
</script>

正文代码:

<?php
echo "<a href='javascript:showhide('delivery.php');'>Show/Hide Delivery options</a>";
require "delivery.php" ?>

关于为什么/如何让它发挥作用的任何想法?

感谢任何帮助!

【问题讨论】:

  • 这个可能要花很长时间才能弄清楚(因为不可能哈哈)
  • 查看 AJAX/JQEURY。你可以通过 AJAX 加载不同的东西来模拟你想要做的事情。
  • 你是显示php-file的内容还是显示php-file的执行结果?
  • 服务器将读取 PHP 代码,不管 javascript 显示/隐藏它。
  • 你真的有一个叫delivery.php的id吗?

标签: php javascript html dom


【解决方案1】:

JavaScript 是客户端,这意味着它在您的 PC 上执行,在从服务器下载网站之后。

PHP 是服务器端的,也就是说它在服务器计算机上执行,然后将纯 HTML 页面发送到您的 PC。

这就是为什么它不可能。你必须使用 PHP 来做到这一点,使用一些变量。否则,您可以使用 javascript/ajax 向服务器发送请求,然后服务器将新信息发送回客户端,然后客户端可以更新页面。

但最好只在 PHP 中这样做:

if (isset($_GET['some_var'])) {
    switch ($_GET['some_var']) {
        default: case "blah":
                 include("somefile.php"); break;
        case "nyah":
                 include("some_other_file.php"); break;
    }
}

'some_var' 可以通过如下形式发送到 PHP 页面:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="GET">
    <input type="text" name="some_var" value="blah"/>
    <input type="submit" value="Go"/>
</form>

如果您在文本字段中输入“blah”并发送,页面将显示“somefile.php”,但如果您输入“nyah”,它将显示“some_other_file.php”的内容。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我认为您正在寻找的是 ajax(例如http://api.jquery.com/jQuery.get/

    【讨论】:

      【解决方案3】:

      您无法以您在这里所做的方式实现您想要做的事情。正如@Ozzy 在 cmets 中所说,这是不可能的。

      原因是 Javascript 代码永远不知道 PHP 代码在做什么。 JS 代码所知道的只是浏览器接收到的内容。这意味着它将delivery.php 文件的内容作为页面的一部分获取,但不知道它来自页面其余部分的单独文件,更不用说知道该文件的名称了。

      快速的答案是在require() 语句周围添加一个包装&lt;div&gt; 元素。

      这将为您提供一个您的 Javascript 代码可以针对显示/隐藏功能的元素。

      所以您的 PHP 代码现在可能如下所示:

      <?php
      echo "<a href='javascript:showhide('deliveryblock');'>Show/Hide Delivery options</a>";
      echo "<div id='deliveryblock'>";
      require "delivery.php"
      echo "</div>";
      ?>
      

      (这确实假设delivery.php 生成的内容是有效的 HTML 代码,但您没有向我们展示该文件的外观,所以我只需要做出这个假设。

      希望对您有所帮助。

      【讨论】:

        【解决方案4】:

        我认为您基本上是在尝试在页面上显示/隐藏一些内容。您的 showhide 函数仅适用于您网页上的某些 html 组件。因此,只需尝试将“delivery.php”的内容放入像&lt;div id='deliverydiv'&gt;&lt;/div&gt; 这样的元素中。然后使用showhide('deliverydiv')

        【讨论】:

          猜你喜欢
          • 2017-09-03
          • 2017-02-11
          • 1970-01-01
          • 2015-01-02
          • 2017-04-04
          • 2023-03-31
          • 2021-02-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多