Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   сортировка массива (https://javascript.ru/forum/dom-window/64160-sortirovka-massiva.html)

gazman 23.07.2016 12:55

сортировка массива
 
здравствуйте. делаю сортировку таблицы.
добавляю отсортированные элементы в массив. задаю функцию сортировки. Но она не работает. сортирует не по порядку. мне нужно, чтобы было 1, 3, 11 и т.д. а функция работает так: 1, 11, 3
помогите, пожалуйста разобраться.

<table class="sort" id="sort" align="center">
	<tr id="zag">
		<td>ID</td>
		<td>Имя</td>
		<td>Фамилия</td>
		<td>Сайт</td>
		<td>Переключалка стилей</td>
	</tr>
	<tr>
		<td>1</td>
		<td>Александр</td>
		<td>Шуркаев</td>
		<td><a href="#">htmlcoder.visions.ru</a></td>
		<td>Не-а</td>
	</tr>
	<tr>
		<td>123</td>
		<td>Пол</td>
		<td>Соуден</td>
		<td><a href="#">idontsmoke.co.uk</a></td>
		<td>Угу</td>
	</tr>
	<tr>
		<td>3</td>
		<td>Джеффри</td>
		<td>Зельдман</td>
		<td><a href="#">zeldman.com</a></td>
		<td>Угу</td>
	</tr>
	<tr>
		<td>44</td>
		<td>Аарон</td>
		<td>Будман</td>
		<td><a href="#">youngpup.net</a></td>
		<td>Не-а</td>
	</tr>
	<tr>
		<td>11</td>
		<td>Глен</td>
		<td>Мерфи</td>
		<td><a href="#">glenmurphy.com</a></td>
		<td>Не-а</td>
	</tr>
	<tr>
		<td>15</td>
		<td>Даниель</td>
		<td>Боган</td>
		<td><a href="#">waferbaby.com</a></td>
		<td>Не-а</td>
	</tr>
	<tr>
		<td>33</td>
		<td>Ден</td>
		<td>Бенджамин</td>
		<td><a href="#">hivelogic.com</a></td>
		<td>Угу</td>
	</tr>

</table>

var table = document.getElementById("sort");
var zag = document.getElementById("sort").rows[0].cells;
var stroke = document.getElementById("sort").rows;


function perebor(zg)
{	
	for (i=0; i<zg.length; i++)
	{
		zg[i].onclick = function ()
		{
			index = this.cellIndex;
			cellRezult = [];
			
			function comp(a, b) {
				if (a > b) return 1;
				if (a < b) return -1;
			}
			
			for (i=1; i<table.rows.length; i++)
			{
				cellRezult[i-1] = [];
				cellRezult[i-1][0] = table.rows[i].getElementsByTagName("td").item(index).innerHTML;
				cellRezult[i-1][1] = table.rows[i];
			}
			
			cellRezult.sort(comp);
			
			for (i=0; i<cellRezult.length; i++)
			{
				table.appendChild(cellRezult[i][1]);
			}
		}
	}
	
}

perebor(zag);

Strongman 23.07.2016 13:27

Удали class="sort" в 1 строке:
<table class="sort" id="sort" align="center">

Или назови класс как-нибудь по-другому.

gazman 23.07.2016 13:50

спасибо

Rise 23.07.2016 14:03

gazman, и что помогло?

рони 23.07.2016 14:31

Цитата:

Сообщение от gazman
getElementsByTagName("td").item

Цитата:

Сообщение от gazman
function comp(a, b)

:-?

Strongman 23.07.2016 14:32

function comp(a, b)
{
if(+a[0] > +b[0]) return 1;
if(+a[0] < +b[0]) return -1;
}

рони 23.07.2016 15:05

Strongman,
тоже не верно

рони 23.07.2016 15:07

сортировка таблицы по клику на ячейку первой строки
 
gazman,
шифровка из центра ...
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">

</head>

<body>
<table class="sort" id="sort" align="center">
  <tr id="zag">
    <td>ID</td>
    <td>Имя</td>
    <td>Фамилия</td>
    <td>Сайт</td>
    <td>Переключалка стилей</td>
  </tr>
  <tr>
    <td>1</td>
    <td>Александр</td>
    <td>Шуркаев</td>
    <td><a href="#">htmlcoder.visions.ru</a></td>
    <td>Не-а</td>
  </tr>
  <tr>
    <td>123</td>
    <td>Пол</td>
    <td>Соуден</td>
    <td><a href="#">idontsmoke.co.uk</a></td>
    <td>Угу</td>
  </tr>
  <tr>
    <td>3</td>
    <td>Джеффри</td>
    <td>Зельдман</td>
    <td><a href="#">zeldman.com</a></td>
    <td>Угу</td>
  </tr>
  <tr>
    <td>44</td>
    <td>Аарон</td>
    <td>Будман</td>
    <td><a href="#">youngpup.net</a></td>
    <td>Не-а</td>
  </tr>
  <tr>
    <td>11</td>
    <td>Глен</td>
    <td>Мерфи</td>
    <td><a href="#">glenmurphy.com</a></td>
    <td>Не-а</td>
  </tr>
  <tr>
    <td>15</td>
    <td>Даниель</td>
    <td>Боган</td>
    <td><a href="#">waferbaby.com</a></td>
    <td>Не-а</td>
  </tr>
  <tr>
    <td>33</td>
    <td>Ден</td>
    <td>Бенджамин</td>
    <td><a href="#">hivelogic.com</a></td>
    <td>Угу</td>
  </tr>

</table>
<script>
window.addEventListener("DOMContentLoaded", function() {
    (function(f) {
        function g(c) {
            return function(b, a) {
                b = b.cells[c].textContent;
                a = a.cells[c].textContent;
                b = +b || b;
                a = +a || a;
                return b > a ? 1 : b < a ? -1 : 0
            }
        }
        var d = document.querySelector(f),
            e = [].slice.call(d.rows, 1);
        [].slice.call(d.rows[0].cells).forEach(function(c, b) {
            var a = 0;
            c.addEventListener("click", function() {
                e.sort(g(b));
                a && e.reverse();
                e.forEach(function(a) {
                    d.appendChild(a)
                });
                a ^= 1
            })
        })
    })(".sort")
});
</script>

</body>
</html>

Strongman 23.07.2016 17:44

Цитата:

Сообщение от рони (Сообщение 423159)
Strongman,
тоже не верно

- как не верно, все верно, все работает. Завидно, так и оскорбляешь меня теперь.

рони 23.07.2016 18:20

Цитата:

Сообщение от Strongman
все верно, все работает

где рабочий макет?


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