Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.11.2013, 23:02
Новичок на форуме
Отправить личное сообщение для Jenk Посмотреть профиль Найти все сообщения от Jenk
 
Регистрация: 26.09.2013
Сообщений: 4

Анимация сортировки
Помогите, гуру JS.
Дали задание, отобразить графически процесс сортировки целых чисел, чтобы пользователь мог воочию наблюдать как сортируются данные. Сортировка - пузырьком.
Ума не приложу, как анимацию сделать тут=( Прошу дать совет, направить на истинный путь=)
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<form>
    <div>Введите числа, которые вы хотите занести в массив, без пробелов, через запятую</div>
    <input type="text" id="arr" required>
    <input type="button" value="Вывести" id="show">
    <input type="button" value="Отсортировать" id="sortButton">
</form>
<div id="sort"></div>
<script>
    function SortBubble() {
        var showButton=document.getElementById('show');
        var sortButton=document.getElementById('sortButton');

        function isNumeric(n) {  //Проверка на число
            return !isNaN(parseFloat(n)) && isFinite(n)
        }

        function checkArr(arr) { //Проверяем, всё ли верно ввёл пользователь
            for(i=0; i<arr.length; i++) {
                number=arr[i];
                if(!isNumeric(number)) {
                    alert('Вы допустили ошибку при вводе');
                    return false;
                }
            }
            return true;
        }


        showButton.onclick=function() { //выводим таблицу
            var arr=document.getElementById('arr').value.split(',');
            if(!checkArr(arr)) return;
            showButton.onclick=null;
            var div=document.getElementById('sort');
            var table="<table><tr>";
            for(i=0; i<arr.length; i++) {
                table+='<td>'+arr[i]+'</td>';
            }
            table+='</tr></table>'
            div.innerHTML+=table;
        }
        sortButton.onclick=function() { //сортируем
            var tds=document.getElementsByTagName('td');
            var tmp=[]
            for (var i = tds.length - 1; i > 0; i--) {
                for (var j = 0; j < i; j++) {
                    if (tds[j].innerHTML > tds[j+1].innerHTML) {
                        tmp = tds[j].innerHTML;
                        tds[j].innerHTML = tds[j+1].innerHTML;
                        tds[j+1].innerHTML = tmp;
                    }
                }
            }
        }

    }
    new SortBubble();
</script>
</body>
</html>

Последний раз редактировалось Jenk, 18.11.2013 в 00:40.
Ответить с цитированием
  #2 (permalink)  
Старый 18.11.2013, 08:35
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от Jenk
Ума не приложу, как анимацию сделать
Вот тебе статейка...
http://javascript.ru/blog/Andrej-Par...cii-JavaScript
Ответить с цитированием
  #3 (permalink)  
Старый 18.11.2013, 17:06
Новичок на форуме
Отправить личное сообщение для Jenk Посмотреть профиль Найти все сообщения от Jenk
 
Регистрация: 26.09.2013
Сообщений: 4

похоже не правильно вопрос сформулировал(
я элементы массива помещаю в ячейки таблицы, и потом беру данные из таблицы и сортирую, но проблема то в чем, я не знаю как тормознуть цикл, чтобы сортировка шла как бы пошагово, чтобы было видно как это дело всё сортируется
setTimeut/Interval тут не подходит, вот я и впал в ступор=(
Ответить с цитированием
  #4 (permalink)  
Старый 19.11.2013, 09:42
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от Jenk
setTimeut/Interval тут не подходит
Значит фик тебе, а не сортировка...
Ответить с цитированием
  #5 (permalink)  
Старый 19.11.2013, 19:00
Профессор
Отправить личное сообщение для l-liava-l Посмотреть профиль Найти все сообщения от l-liava-l
 
Регистрация: 14.03.2012
Сообщений: 1,808

может визуально имели ввиду так?)

<!DOCTYPE html>
<html>
<head>
    <title></title>

    <script type="text/javascript">

    (function(){
        var a = [1,4,5,6,4,9,12,8];

        for(var i = 0; i < a.length; i++) {

            if(a[i] > a[i+1]) {

               var buf = a[i];
                a[i] = a[i+1];
                a[i+1] = buf;

                document.write(a + "</br>");
                i = 0;

            }

        }
    })()




    </script>
</head>
<body>
</body>
</html>
__________________
Научу себя плохому

Последний раз редактировалось l-liava-l, 19.11.2013 в 19:15.
Ответить с цитированием
  #6 (permalink)  
Старый 22.11.2013, 22:03
Новичок на форуме
Отправить личное сообщение для Jenk Посмотреть профиль Найти все сообщения от Jenk
 
Регистрация: 26.09.2013
Сообщений: 4

Если кому интересно, почти сделал) осталось некоторые баги поправить, почистить код и на jq переделать)
http://learn.javascript.ru/play/a8BgK
Ответить с цитированием
  #7 (permalink)  
Старый 22.11.2013, 22:51
Новичок на форуме
Отправить личное сообщение для Jenk Посмотреть профиль Найти все сообщения от Jenk
 
Регистрация: 26.09.2013
Сообщений: 4

Просто в задание указано, что надо на jq написать, а я пока с jq на вы, только на родном js'е писал.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CSS анимация после :target gJam (X)HTML/CSS 0 01.08.2013 22:42
Анимация сортировки массива Sergey111 Общие вопросы Javascript 3 06.05.2012 11:51
Анимация движения Armen Общие вопросы Javascript 8 02.08.2011 18:32
Анимация. Помогите понять почему не работает. kadurban jQuery 4 08.07.2010 20:50
Цикличность анимация? SashaBorandi jQuery 1 25.12.2008 09:20