我利用这个资源来构建我的代码:http://www.w3schools.com/jsref/met_win_clearinterval.asp
var intervalID = setInterval(function(){ ogpeWrapper() }, 10);
function ogpeWrapper() {
$("#breadcrumbWrapper, #leftColWrapper, #rightColWrapper").wrapAll('<div id="colWrapperContainer"></div>');
}(jQuery);
function myStopFunction() {
if (document.getElementById('colWrapperContainer')) {
clearInterval(intervalID);
setIntervalID = undefined;
}
}
我的ogpeWrapper函数正在运行,但clearInterval函数不是。
基本上,一旦$(&#34; #breadcrumbWrapper,#leftColWrapper,#rightColWrapper&#34;)。wrapAll(&#39;&#39;);运行,我希望间隔停止运行它。
编辑 - 中部标准时间下午12:24:
这是我用来包装所列元素的基本代码 -
(function($) {
$("#breadcrumbAds, #breadcrumbWrapper, #containerTopParsys, #leftColWrapper, #rightColWrapper").wrapAll('<div id="colWrapperContainer"></div>');
})(jQuery);
此代码有效,但在DOM完全加载之前,它不会处理更改。一旦这些元素全部可用,我需要该函数才能工作。所以我需要使用setInterval来处理函数,然后在处理函数后清除间隔。
如果有人知道另一种方法,除了setIterval之外,请告诉我。
答案 0 :(得分:0)
您需要在变量中创建明确 if else条件,以便确切知道启动的时间以及何时停止。此外,由于最短的毫秒间隔时间在浏览器之间不一致,虽然您希望它能够快速检测到,但我建议使用“更安全”的数字并使用100作为最小值。 .length
方法是一种方便的方法,可以检查元素是否在页面上;您可以将其用作伪动态true / false条件。最后,在您的.wrapAll()
标记中,我交换了您的单引号和双引号,因为最好这样做。
var colWrapper = setInterval(function(){
if ($('div#colWrapperContainer').length > 0) {
var doNothing = "";
clearInterval(colWrapper);
} else {
$("#breadcrumbWrapper, #leftColWrapper, #rightColWrapper").wrapAll("<div id='colWrapperContainer'></div>");
}
}, 100);
以下是您参考Wrap Example
的工作示例<强>更新强>
将脚本放在<body>
标记内的示例(否 window.load / document.ready),以便它在加载后立即独立运行。
<script type="text/javascript">//<![CDATA[
//http://stackoverflow.com/questions/33483000/clearinterval-function-not-clearing-setinterval-function/33483267#33483267
//Auto Wrap Solution
//Alexander Dixon [11-02-2015]
var wrapThese = $("#breadcrumbWrapper, #leftColWrapper, #rightColWrapper");
var colWrapper = setInterval(function () {
if ($('div#colWrapperContainer').length > 0) {
var doNothing = "";
clearInterval(colWrapper);
} else {
wrapThese.wrapAll('<div id="colWrapperContainer"></div>').addClass('success');
}
}, 100);
//]]>
</script>