【问题标题】:Placing javascript/jquery functions in a universally accessible page将 javascript/jquery 函数放置在一个普遍可访问的页面中
【发布时间】:2013-01-16 16:52:14
【问题描述】:

我正在尝试清理我的页面,我这样做的主要方法之一是将 JavaScript 和 JQuery 函数放入一个名为“scripts.js”的文件中,该文件会在页面加载时自动访问。

我遇到了使用 php 从页面本身调用的函数的问题。例如,下面的函数不起作用,实际上“杀死”了所有页面的脚本(所以现在应该隐藏的东西没有,并且东西没有正确加载)。我已经把它缩小到我用来调用变量的事实。我真的希望能够在这个通用文件中保留使用 PHP 的函数,而不是堵塞 HTML 模板页面,任何关于如何使其工作的想法,或者如果不是我可以如何调用所需的值?如果有帮助,它们总是会在呈现之前被提取到页面中。

function positiveSelect()
{
   var size = <?php echo $idea[0]["size"]; ?> * 1;
   if (size > 5)
      return true;
   else
      return false; 
}

【问题讨论】:

  • 您可以将该数据存储在 html 中的某个位置并使用 js 访问它。例如,如果您将$idea[] 作为具有“idea”类的div 输出到页面上,您可以使用var size = $(".idea").length
  • 有什么普遍接受的方法吗?或者你对最好的方法有什么想法吗?我宁愿不必只插入一堆带有白色文本的段落。本质上,有没有办法将它存储在 HTML 中,使其根本不会显示在页面上?
  • 将您的 .js 文件转换为 php 脚本,并包含/运行填充该 $idea var 所需的任何代码。
  • 在这种情况下数据代表什么?它是如何使用的?它是干什么用的?有许多不同的方式来存储它,但它应该相对于它所代表的元素(如果有的话)来完成。

标签: php javascript jquery universal


【解决方案1】:

如果您无法从 DOM 本身检索数据,您可以使用相应的对象存储值:

 <div data-size=20>

然后使用:

 $(element).data("size");

或者,如果您有要存储的全局数据,您可以在 html 文档的头部创建一个值“容器”,如下所示:

<script type="text/x-json" class="global-data">{"value1":"1","value2":"2"}</script>

然后读取该元素的内容并用JSON.parse解析它

【讨论】:

  • 这是有道理的,似乎是最简单和最好的方法,对最好的 html 元素有什么想法吗?我在想
  • 我只会在真正需要时创建一个新元素。如果你例如想要确保至少选中一个组的 5 个复选框并且不超过 10 个,您可以将它们分组(如果尚未完成)在一个元素内并添加以下信息:&lt;div data-min-checked=5 data-max-checked=10&gt; ... &lt;input type="checkbox"&gt; .... &lt;/div&gt;
  • @ChrisS 创建了一个小 jsfiddle 示例 jsfiddle.net/AnaAh 希望这对你有帮助
【解决方案2】:

如果此函数是特定于某个页面的,您可能需要添加第二个刚刚加载到该页面上的 js 脚本。

另一种方法是在该 php 页面中回显一个 js 变量,并让您的代码以该变量作为参数调用该函数。

【讨论】:

    【解决方案3】:

    您可以给 javascript 一个“.php”扩展名并以完全相同的方式在脚本中调用它:

    <script type="javascript" src="path/to/scripts.php"></script>
    

    【讨论】:

    • 我会尽可能避免混合使用 php 和 javascript,因为这会阻止使用例如jslint 或最小化工具。
    • 我试过这个,但它似乎对我不起作用,在阅读了其他一些 cmets 之后,很多人似乎认为这样做有点“危险”。不过还是非常感谢。
    • @t.niese:我知道,但既然他需要这种解决方案,那是我想出的最好的办法。
    【解决方案4】:

    您可以将生成脚本文件命名为 scripts.php 或 scripts.js.php;然后 PHP 预处理器将处理该文件并评估 PHP 语句。

    【讨论】:

      【解决方案5】:

      在将 php 或任何服务器端语言与 javascript 混合时,您需要注意,当在客户端创建 javascript 文件时,php 只会执行一次。

      这可能就是您得到意外结果的原因。当您从一个页面移动到另一个页面时,全局 scripts.js 中的 php sn-p 将不会得到更新。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-30
        • 1970-01-01
        • 1970-01-01
        • 2019-12-26
        • 1970-01-01
        相关资源
        最近更新 更多