IE и Edge не устанавливают свойство zIndex в цикле
Здравствуйте.
Решил написать свой микрофреймворк и столкнулся с небольшой проблемой при создании одного из модулей для вращения какого-либо контента. Вот код модуля: // Micro module rotate some contents // [element] :: ( #parents fixed container -> .slide selector ) rotate: function(e,c,t) { var e = this.htmlObj(e); var t = t || 3000; var ind = 0; setInterval(function() { e[ind].style.zIndex++; $.callback(c, e[ind]); if(ind++ >= e.length - 1) { for(var i in e) e[i].style.zIndex = 0; ind = 0; }; }, t); }, htmlObj: function(e) { return this.isO(e) ? e : this.get(e); }, Вот пример вращаемого конетнта: <div id="presentation"> <p>lorem.</p> <p>ipsum.</p> <p>dolor.</p> </div> А вот стили отображения: Код:
/* rotation */ после первого срабатывания и корректного изменения zIndex у свойств HTML-элементов, при повторных итерациях, браузер как бы не обращает внимания на обхъекты и zIndex перестает меняться вообще:help: . В Opera, Firefox, Android browser, Chrome и Safari все работает великолепно! Помогите мне пожалуйста устранить эту ошибку в браузере IE и Edge. Хотя бы в Edge так как писать я буду еще долго, а осел к тому времени, я надеюсь, сдохнет окончательно. |
переписал код без участия моего фреймворка и добавил проверку на тип объекта в цикле. код в IE начал работать исправно:write: , но после того, как я поместил его назад во фреймворк - ничего не изменилось. два срабатывания и никаких ошибок в консоли. что делать с этим поганым ослом:-E ?
<script type="text/javascript"> var e = document.getElementsByTagName('p'); var t = 900; var ind = 0; setInterval(function() { e[ind].style.zIndex++; if(ind++ === e.length - 1) { for(var i in e) if(typeof(i) === 'object') e[i].style.zIndex = 0; ind = 0; }; }, t); </script> то есть код отдельно работает, но в программе работать комплексно снова отказывается. помогите найти ошибку плиз! у меня используется свой движок для выборки HTML элементов из DOM. И в нем я ошибку найти не смог ): Вот весь фреймворк с примерами: https://drive.google.com/file/d/0B4F...ew?usp=sharing Может кто-то найдет немного своего времени чтобы помочь справиться с ошибкой? |
xShift,
Вы утверждаете, что этот код работает? Странно... Проверьте значения typeof(i) и i В Chrome typeof(i) всегда string |
<style> #presentation { border-radius: 8px; position: relative; margin: 20px 0; padding: 12px; height: 90px; width: 95%; } #mainContents #presentation p { box-shadow: 0 0 5px #999; background: #FFFFFF; position: absolute; border-radius: 8px; padding: 10px; top: 0px; } </style> <div id="mainContents"> <div id="presentation"> <p>lorem.</p> <p>ipsum.</p> <p>dolor.</p> </div> </div> <script> var e = document.getElementsByTagName('p'); var t = 900; var ind = 0; setInterval(function () { e[ind].style.zIndex = 0; ind++; if (ind == e.length) { ind = 0; } e[ind].style.zIndex = 1; }, t); </script> |
Цитата:
Спасибо вам огромное! У вас как-то понятнее получилось :victory: Я все мозги об этот код сломал :yes: |
Часовой пояс GMT +3, время: 00:57. |