如何清除这些间隔?

时间:2016-02-22 19:57:31

标签: javascript html iframe intervals clearinterval

我正在创建自己的类似JSFiddle的webapp,我希望实现元素大小调整,但保持文档高度不变,所以我必须重新计算每个resize上的元素维度。 我有这个脚本:

var a = setInterval(setHeight, 1);
var b = setInterval(formsWidth, 1);
iframe.onResizeStart = a;
html.onResizeStart = b;
iframe.onResizeStop = clearInterval(a);
html.onResizeStop = clearInterval(b);

iframe是呈现用户代码的元素,HTML是我的三个textareas之一。我希望这个脚本重新计算iframe调整大小的textareas高度,并在改变其中一个的宽度时重新计算它们的宽度。

我成功完成了这项工作,但我无法停止间隔,我需要帮助。 上面的代码现在根本不起作用,可能是因为调用onResizeStart变量。

如果有人能帮助我,我将不胜感激。 我不想使用jQuery。

1 个答案:

答案 0 :(得分:1)

它不起作用,因为你在调用setInterval()之后几乎立即调用clearInterval(),因此间隔永远不会有机会执行。您需要存储a和b,然后在调整大小完成后再调用clearInterval()。

编辑:更仔细地看一下,只需将每次调用包装到函数中的clearInterval()。那样clearInterval就不会立即执行,而是在触发onResizeStop事件时执行。

iframe.onResizeStop = function() { clearInterval(a); };