【问题标题】:Javascript objects working in html but not php [duplicate]Javascript对象在html中工作但不是php [重复]
【发布时间】:2014-04-19 19:08:00
【问题描述】:

我正在开发一个使用文本框并对用户提交的内容进行处理的网站。

在我没有使用 PHP(所有 HTML)的索引页面上,我想使用的 Javascript 选项卡可以正常工作。但是,在用户输入内容并提交后,下一个加载的页面有 PHP。 PHP 页面调用了一个函数来打印 HTML,但是即使该页面与之前的索引页面完全相同,选项卡也根本不起作用。

...
<article id="navtabs" class="grid col-full">
    <h2>Tabs</h2>
    <div class="">
        <ul class="tabs clearfix">
            <li><a href="#tab1">First</a></li>
            <li><a href="#tab2">Second</a></li>
            <li><a href="#tab3">Third</a></li>
        </ul>
        <div class="tab_container">
            <article id="tab1" class="tab_content">
                <p>Lorem ipsum dolor sit amet</p>
            </article>

            <article id="tab2" class="tab_content">
                <h6>Heading</h6>
                <p>Lorem ipsum dolor sit amet</p>
            </article>

            <article id="tab3" class="tab_content">
                <h6>Heading</h6>
                <p>Lorem ipsum dolor sit amet</p>
            </article>
         </div>
      </div>
</article>
...

我的 scripts.js 文件中的 Javascript 代码如下所示:

$(document).ready(function() {
...

//TABS
var tabContents = $(".tab_content").hide(), 
    tabs = $("ul.tabs li");

tabs.first().addClass("active").show();
tabContents.first().show();

tabs.click(function() {
    var $this = $(this), 
        activeTab = $this.find('a').attr('href');

    if(!$this.hasClass('active')){
        $this.addClass('active').siblings().removeClass('active');
        tabContents.hide().filter(activeTab).fadeIn();
    }
    return false;
}); 
...
});

任何想法为什么这在仅使用 HTML 时会起作用,但放在 PHP 函数中时不起作用?

为澄清而编辑:在有效的版本中,它只是纯 HTML。在没有的版本中,我正在做 HTML 的回声。这是失败的版本。

【问题讨论】:

  • 控制台说什么?
  • 控制台为空,没有错误或警告。
  • 查看页面源码并进行比较?
  • 完美,谢谢!页脚包含在 echo 中,它包含 Javascript 正常运行所需的一些内容。

标签: javascript php html


【解决方案1】:

如果 HTML 正确且 javascript 正确且已加载,则 HTML 来自静态文件还是使用 PHP 生成没有区别。浏览器仍然认为它只是 HTML(PHP 是服务器端的,所以浏览器永远不会看到它)并且 javascript 在浏览器中运行。

这给我们留下了以下可能性:

  1. 通过 PHP 生成的 HTML 在某些方面有所不同(我知道你说不是,但请仔细检查)
  2. 第二次没有加载 javascript 文件

这是假设您正在加载使用 PHP 生成的整个页面 - 如果您开始添加位 ysing ajax 请求,那么情况会随着您在文档中设置选项卡代码而改变,并且只会看到当时的页面。

【讨论】:

  • 读到这里的时候也是这么想的。最好了解回显脚本的过程。
  • 这是完全相同的 HTML。我尝试获取原始页面并将其简单地封装在 PHP 中并使用 echo 打印它,但它当时无法正常工作。我假设正在加载 javascript 文件,因为我在 HTML 中没有更改任何内容。是的,整个页面都使用 PHP(只是一个简单的回显)。
  • 您的意思是您已将整个 HTML 复制到一个字符串中,然后用 PHP 回显该字符串?那么可能是引号周围的问题。您需要检查 生成的 HTML 是否匹配(即加载页面,在浏览器中执行view source(通常在右键菜单上)并比较两个页面的 HTML 源代码。跨度>
【解决方案2】:

简单的答案。

任何想法为什么这在仅使用 HTML 时会起作用,但放在 PHP 函数中时不起作用?

两者都非常不同。 Javascript 是客户端编码,而 PHP 是服务器端编码。

您应该真正了解它们之间的区别。语法也不同。

【讨论】:

  • 你可以echo它虽然
  • 这就是我正在做的。我应该指定的。
猜你喜欢
  • 2020-08-30
  • 2013-06-29
  • 1970-01-01
  • 2019-08-18
  • 2014-04-17
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多