Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.01.2019, 18:51
Интересующийся
Отправить личное сообщение для prolk Посмотреть профиль Найти все сообщения от prolk
 
Регистрация: 15.03.2018
Сообщений: 20

может, кто поможет......
Есть динамическая таблица....... нужно ее отсортировать.... не придумаю, что делать.... функции все рабочие.... onclick весит на td в HTML..... при клике не срабатывает..... может нужно удалять таблицу и формировать по новому?
while(tbod.childNodes.length) {
       tbod.removeChild(tbod.childNodes[0]);
   }
for(var i=0; i<ar_tr.length; i++) {
        tbod.appendChild(ar_tr[i]);
  }

это код

window.onload = function(e) {
    function createTable(arr) {
        let arr_span = [],
            arr_price = [],
            arr_image = [];
        for (let i = 0; i < arr.length; i++) {
            switch (arr[i]) {
                case 'things':
                    let span = document.querySelectorAll('.things span');
                    for (let j = 0; j < span.length; ++j) {
                        arr_span[j] = span[j].textContent;
                    }
                    break;
                case 'view':
                    let images = document.querySelectorAll('.photos img');
                    for (let j = 0; j < images.length; ++j) {
                        arr_image[j] = images[j].getAttribute('src');
                    }
                    break;
                case 'price':
                    let price = document.querySelectorAll('.price span');
                    for (let j = 0; j < price.length; ++j) {
                        arr_price[j] = price[j].textContent;
                    }
                    break;
            }
        }
        funcTable(arr_span, arr_image, arr_price);
    };

    function funcTable(arr_span, arr_image, arr_price) {
        let tbod = document.querySelector('.tbod');
        for (let i = 0; i < arr_image.length; ++i) {
            let elem_tr = document.createElement('tr');
            elem_tr.innerHTML = '<td>' + arr_span[i] + '</td><td><img src="' + arr_image[i] + '"></td><td>' + arr_price[i] + '</td>';
            tbod.appendChild(elem_tr);
        }
    };
    createTable(['things', 'view', 'price']);
};

function sortTable(num, top_bottom) {
    let tr = document.querySelectorAll('.tbod tr'),
        arr_tr = [];
    for (let i = 0; i < tr.length; i++) {
        arr_tr[i] = tr[i];
    }

    arr_tr.sort(sortTr);

    function sortTr(a1, a2) {
        if (isNaN(a1.childNodes[0].innerHTML) && isNaN(a2.childNodes[0].innerHTML)) {
            var a11 = a1.childNodes[0].innerHTML;
            var a22 = a2.childNodes[0].innerHTML;
        } else {
            var a11 = parseInt(a1.childNodes[0].innerHTML);
            var a22 = parseInt(a2.childNodes[0].innerHTML);
        }
        if (top_bottom == 'bottom') {
            if (a11 > a22) return 1;
            else if (a11 == a22) return 0;
            else return -1;
        } else if (top_bottom == 'top') {
            if (a11 < a22) return 1;
            else if (a11 == a22) return 0;
            else return -1;
        }
    }

};



<div class="gallery">
        <div class="things">
            <span onclick="sortTable(0, 'bottom')">computers</span>
            <span>printers</span>
            <span onclick="sortTable(1, 'top')">audio</span>
        </div>
        <div class="photos">
            <img src="images/pk.jpg" alt="pk">
            <img src="images/pr.jpg" alt="pr">
            <img src="images/vi.jpg" alt="vi">
        </div>
            <div class="price">
                <span>5000</span>
                <span>2000</span>
                <span>500</span>
            </div>
            <hr>
            <table>
                <caption>dinamic-table</caption>
                <tr class="clickOn">
                    <td>tovar</td>
                    <td>view</td>
                    <td>price</td>
                </tr>
                <tbody class="tbod">
                </tbody>
            </table>
        </div>

Последний раз редактировалось prolk, 02.01.2019 в 19:30.
Ответить с цитированием
  #2 (permalink)  
Старый 02.01.2019, 20:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,081

prolk,
код 1 строка 4, перенести в строку 50 второго кода.
Ответить с цитированием
  #3 (permalink)  
Старый 02.01.2019, 22:17
Интересующийся
Отправить личное сообщение для prolk Посмотреть профиль Найти все сообщения от prolk
 
Регистрация: 15.03.2018
Сообщений: 20

я конечно, извиняюсь, но это пустой массив..... я только учусь.... но, не понял, что куда перенести))))))
Ответить с цитированием
  #4 (permalink)  
Старый 02.01.2019, 23:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,081

prolk,
arr_tr.sort(sortTr).forEach(function(tr) {
    tr.parentNode.appendChild(tr)
});
Ответить с цитированием
  #5 (permalink)  
Старый 03.01.2019, 08:09
Интересующийся
Отправить личное сообщение для prolk Посмотреть профиль Найти все сообщения от prolk
 
Регистрация: 15.03.2018
Сообщений: 20

спасибо.. работает)))))
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Может кто какие замечания сделает или поможет дописать format qwerty-клавиатура Ваши сайты и скрипты 10 22.04.2013 04:54
ротатор котента, может кто встречал? adik jQuery 0 13.01.2012 08:34
Прошу помощи скриптеров или кого либо кто поможет :) f00rZik Общие вопросы Javascript 13 05.01.2012 03:42
Сторонние библиотеки - быть или не быть? IIIEPJIOK Оффтопик 64 21.03.2009 19:39
Может кто подсказать как можно сделать submit из левого фрейма в правый maxander Internet Explorer 1 28.11.2008 10:15