【问题标题】:Stop running javascript based on load()根据 load() 停止运行 javascript
【发布时间】:2017-09-07 15:26:25
【问题描述】:

我正在使用 Jquery .load() 函数用外部加载的 php 替换 div 的内容,我的问题是我想为 php 文件编写我的 javascript 代码并将其保存在文件的底部。

所以基本上当我运行.load() 函数时,我正在加载的文件的内部javascript 也会运行。到目前为止,这很好用。我的问题是,当我再次运行.load() 函数以将具有不同javascript 的不同内容加载到我的div 中时,之前加载的文件的javascript 继续运行。

我需要它停止运行上次加载的 php 文件的 javascript,并加载新的 javascript。

例如,我有 1 个 div 和 5 个文件,每当我单击一个按钮时,使用 load() 函数,我将我选择的页面的 php 和 javascript 注入到 div 中。如果我的每个页面底部都有这个代码

 setInterval(function(){
   console.log("hello");
 },1000)

我一次加载每个页面 1,它存储 javascript,结果,每秒运行 5 次控制台日志“hello”。

我想要它做的是删除以前的 javascript,并在每次选择新页面时加载新的。

我如何做到这一点?

【问题讨论】:

  • 所以你需要将它存储在一个变量中,如果它已经存在则清除它
  • 为什么在加载时使用,您可以使用模糊或点击事件在您进行选择时触发它
  • 将我所有的外部javascript存储在一个变量中并在运行下一个之前清除它?抱歉看起来很愚蠢,但我将如何做到这一点?
  • 对不起@Keith,我没有在加载时使用它,每当我点击一个按钮时我都会运行load()函数
  • @Keith 加载如api.jquery.com/load

标签: javascript php jquery html dom


【解决方案1】:

您需要将其存储到一个变量中,如果存在则将其删除。

if (window.myInterval) window.clearInterval(window.myInterval)
window.myInterval = setInterval(function(){
  console.log("hello");
}, 1000)

【讨论】:

  • 太棒了,谢谢!您能否简要解释一下这是如何工作的?谢谢:)
  • 不确定有什么要解释的......如果存在间隔,则清除间隔,setInterval 返回一个 id,阅读 MDN 上的文档。 mdn.beonex.com/en/DOM/window.setInterval.html
【解决方案2】:

最好使用删除间隔来调用

clearInterval();

方法,因为一旦你调用了

setInterval();

方法,它将继续执行它所说的功能,直到您离开页面或清除间隔。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 2013-08-02
    • 2018-06-02
    相关资源
    最近更新 更多