2016-02-22 2 views
1

Я создаю свой собственный JSP-файл, похожий на JSFiddle, и хочу изменить размеры элементов, но не увеличивать высоту документа, поэтому мне приходится пересчитывать размеры элементов при каждом изменении размера. У меня есть этот скрипт:Как очистить эти интервалы?

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 является одним из моих трех прокручиваемых. Я хочу, чтобы этот скрипт пересчитывал высоты текстовых полей при изменении размера iframe и пересчитывал их ширину при изменении ширины одного из них.

Мне удалось сделать эту работу, но я не мог остановить интервалы, и мне нужна помощь. Вышеприведенный код не работает сейчас, вероятно, из-за вызова переменной onResizeStart.

Буду благодарен, если кто-то может мне помочь. Я предпочитаю не использовать jQuery.

ответ

1

Это не работает, потому что вы вызываете clearInterval() почти сразу после вызова setInterval(), поэтому интервалы никогда не получат возможность выполнить. Вам нужно будет сохранить a и b, а затем вызывать clearInterval() на них позже, после того, как будет выполнено изменение размера.

РЕДАКТИРОВАТЬ: взглянув на это более внимательно, просто оберните каждый вызов clearInterval() в функции. Таким образом clearInterval не будет выполняться немедленно, а скорее при запуске события onResizeStop.

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

Это похоже на работу, hovever - в Firefox, на вкладке Performance можно еще увидеть много setInterval событий:/ – Wilkoklak

+0

Я только показал код для одного из интервалов. Если вы обернете оба clearIntervals, и если оба ваших события стреляют должным образом, вы должны увидеть интервалы остановки. Поместите вызов console.log() в каждую функцию события непосредственно перед вызовом clearInterval() и посмотрите, будет ли каждая функция вызвана вашим событием, как вы ожидаете. – RJM

Смежные вопросы