Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Неправильно работет скрипт (https://javascript.ru/forum/events/65970-nepravilno-rabotet-skript.html)

ghost666 18.11.2016 09:26

Неправильно работет скрипт
 
задача: есть 67 div-ов, нужно менять их из через определенный отрезок времени. вот скрипт:
<script>
			jQuery(document).ready(function($) {
				var i = 0;
				var msg_count = 67;
				setInterval(
					function () {
						i = i + 1;
						if (i > msg_count) i = 1;
						$('.domotireg:nth-child(' + i + ')').fadeIn(500).css('display', 'table').delay(7000).fadeOut(500);
					}, 15000);
			});
			</script>

проблема в том что они менются - но предыдущий не исчезает.
Подскажите пожалуйста где косяк.

ksa 18.11.2016 09:35

Цитата:

Сообщение от ghost666
Подскажите пожалуйста где косяк.

Ты хоть бы пример полный сделал... Где ХТМЛ?

ksa 18.11.2016 09:39

ghost666, может этот пример тебе поможет
http://javascript.ru/forum/jquery/23...-animacii.html

Dilettante_Pro 18.11.2016 10:23

ghost666,
А зачем .css('display', 'table') ?

Dilettante_Pro 18.11.2016 14:04

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"> </script>
<style>
    .domotireg
    {
        display: none;
        position: relative;
      }
    td
    {
        border: 1px solid black;
    }
</style>
<body>
    <table style='display:table'>
            <tr>
                <td>
        <table class='domotireg'>
            <tr>
                <td>
                    1
                </td>
                <td>
                    2
                </td>
            </tr>
            <tr>
                <td>
                    3
                </td>
                <td>
                    4
                </td>
            </tr>
            <tr>
                <td>
                    1
                </td>
                <td>
                    2
                </td>
            </tr>
            <tr>
                <td>
                    3
                </td>
                <td>
                    4
                </td>
            </tr>
        </table>
        <table class='domotireg'>
            <tr>
                <td>
                   5
                </td>
                <td>
                   6
                </td>
            </tr>
            <tr>
                <td>
                    7
                </td>
                <td>
                    8
                </td>
            </tr>
            <tr>
                <td>
                   5
                </td>
                <td>
                   6
                </td>
            </tr>
            <tr>
                <td>
                    7
                </td>
                <td>
                    8
                </td>
            </tr>
        </table>
        </td>
        </tr>
    </table>
    <script type="text/javascript">
        window.onload = function () {
            var i = 0;
            var msg_count = 2;
            setInterval(
					function () {
					    i = i + 1;
					    if (i > msg_count) i = 1;
					    $('.domotireg:nth-child(' + i + ')').fadeIn(2500).delay(2000).fadeOut(2500);
					}, 7000);
        }
    </script>
</body>

ksa 18.11.2016 14:49

Dilettante_Pro, в твоем варианте бывают случаи, когда видно обе таблички "1234" и "5678"... :(

ksa 18.11.2016 15:01

Вот т.с. гарантированное окончание анимации...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
.domotireg {
	display: none;
	position: relative;
}
td {
	border: 1px solid black;
}
</style>
<script type='text/javascript'>
$(function (){
	var i = 0;
	var msg_count = 2;
	iteration();
	function iteration() {
		if (++i > msg_count) i = 1;
		$.when(
			$('.domotireg:nth-child(' + i + ')').fadeIn(2500).delay(2000).fadeOut(2500)
		).then(function (){
			setTimeout(iteration,1000);
		});
	};
});
</script>
</head>
<body>
    <table style='display:table'>
            <tr>
                <td>
        <table class='domotireg'>
            <tr>
                <td>
                    1
                </td>
                <td>
                    2
                </td>
            </tr>
            <tr>
                <td>
                    3
                </td>
                <td>
                    4
                </td>
            </tr>
            <tr>
                <td>
                    1
                </td>
                <td>
                    2
                </td>
            </tr>
            <tr>
                <td>
                    3
                </td>
                <td>
                    4
                </td>
            </tr>
        </table>
        <table class='domotireg'>
            <tr>
                <td>
                   5
                </td>
                <td>
                   6
                </td>
            </tr>
            <tr>
                <td>
                    7
                </td>
                <td>
                    8
                </td>
            </tr>
            <tr>
                <td>
                   5
                </td>
                <td>
                   6
                </td>
            </tr>
            <tr>
                <td>
                    7
                </td>
                <td>
                    8
                </td>
            </tr>
        </table>
        </td>
        </tr>
    </table>
</body>
</html>

Dilettante_Pro 18.11.2016 15:06

Цитата:

Сообщение от ksa (Сообщение 435420)
Dilettante_Pro, в твоем варианте бывают случаи, когда видно обе таблички "1234" и "5678"... :(

Да это я так просто... макет в принципе... ТС молчит.


Часовой пояс GMT +3, время: 00:18.