Вы используете тот же флаг, что, вероятно, приводит к некоторой блокировке.Самое простое решение для вас - просто добавить еще один флаг для второй версии - но разве это не будет намного приятнее с одной интервальной функцией?Если бы я был вами, я бы, вероятно, также захотел бы кэшировать элементы вместо того, чтобы выполнять поиск в каждом интервале.
Обновление;
Из (удаленного) комментария выХотите добавить элементы динамически в одну и ту же функцию интервала?Я написал небольшой плагин для вас (да, медленный и скучный день на работе).Вы можете добавлять элементы и изменять имена классов CSS во время выполнения или даже останавливать интервал.Только протестировано в FireFox, но это стандарт JS и должно работать в большинстве браузеров ...
файл JavaScript
(function (window, document, undef) {
var CB = {};
if (typeof window.CB !== typeof undef) {
return;
}
CB = function () {
var elements = [],
classes = ['first-round', 'second-round'],
intervalId = 0;
var flag = 0;
var switcher = function () {
for (var i = 0; i < elements.length; i++) {
elements[i].className = classes[flag];
}
flag = 1 - flag;
};
return {
setClasses: function (first, second) {
classes = [first, second];
},
addElement: function (element) {
elements.push(element);
},
init: function (element, firstClass, secondClass) {
this.addElement(element);
this.setClasses(firstClass, secondClass);
return this;
},
start: function (interval) {
intervalId = setInterval(switcher, interval);
},
stop: function () {
clearInterval(intervalId);
}
}
}();
window.CB = CB;
})(window, document);
HTML-тестовая страница с использованиемпример
Тест добавляет два дополнительных элемента во время выполнения (время ожидания составляет 5 секунд), а также изменяет классы
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<style>
.container {
width: 600px;
margin: 50px auto;
}
.container > div {
width: 300px;
height: 50px;
float: left;
}
.container .clear {
clear: both;
float: none;
width: 0;
height: 0;
}
.first-class {
background-color: red;
}
.second-class {
background-color: blue;
}
.new-first-class {
background-color: black;
}
.new-second-class {
background-color: grey;
}
</style>
</head>
<body>
<div class="container">
<div id="Id1">
</div>
<div id="Id2">
</div>
<div class="clear"></div>
</div>
<div class="container">
<div id="Id3">
</div>
<div id="Id4">
</div>
<div class="clear"></div>
</div>
<script src="CB.js"></script>
<script>
window.onload = function () {
CB.init(document.getElementById('Id1'), 'first-class', 'second-class');
CB.addElement(document.getElementById('Id2'));
CB.start(120);
setTimeout(function () {
CB.addElement(document.getElementById('Id3'));
CB.addElement(document.getElementById('Id4'));
CB.setClasses('new-first-class', 'new-second-class');
}, 5000);
};
</script>
</body>
</html>