Есть динамическая таблица....... нужно ее отсортировать.... не придумаю, что делать.... функции все рабочие.... 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>