Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.07.2016, 12:55
Аспирант
Отправить личное сообщение для gazman Посмотреть профиль Найти все сообщения от gazman
 
Регистрация: 02.09.2015
Сообщений: 38

сортировка массива
здравствуйте. делаю сортировку таблицы.
добавляю отсортированные элементы в массив. задаю функцию сортировки. Но она не работает. сортирует не по порядку. мне нужно, чтобы было 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);
Ответить с цитированием
  #2 (permalink)  
Старый 23.07.2016, 13:27
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

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

Или назови класс как-нибудь по-другому.
Ответить с цитированием
  #3 (permalink)  
Старый 23.07.2016, 13:50
Аспирант
Отправить личное сообщение для gazman Посмотреть профиль Найти все сообщения от gazman
 
Регистрация: 02.09.2015
Сообщений: 38

спасибо
Ответить с цитированием
  #4 (permalink)  
Старый 23.07.2016, 14:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от gazman
getElementsByTagName("td").item
Сообщение от gazman
function comp(a, b)
Ответить с цитированием
  #5 (permalink)  
Старый 23.07.2016, 14:32
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

function comp(a, b)
{
if(+a[0] > +b[0]) return 1;
if(+a[0] < +b[0]) return -1;
}
Ответить с цитированием
  #6 (permalink)  
Старый 23.07.2016, 15:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Strongman,
тоже не верно
Ответить с цитированием
  #7 (permalink)  
Старый 23.07.2016, 15:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

сортировка таблицы по клику на ячейку первой строки
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>
Ответить с цитированием
  #8 (permalink)  
Старый 23.07.2016, 17:44
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

Сообщение от рони Посмотреть сообщение
Strongman,
тоже не верно
- как не верно, все верно, все работает. Завидно, так и оскорбляешь меня теперь.
Ответить с цитированием
  #9 (permalink)  
Старый 23.07.2016, 18:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Strongman
все верно, все работает
где рабочий макет?
Ответить с цитированием
  #10 (permalink)  
Старый 24.07.2016, 21:53
Аспирант
Отправить личное сообщение для gazman Посмотреть профиль Найти все сообщения от gazman
 
Регистрация: 02.09.2015
Сообщений: 38

рони,
спасибо. всё круто. разбираюсь в Вашем коде теперь))
а для моего варианта можно поправить? или всё безнадёжно?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непростая задача, сортировка массива Gerd199 Общие вопросы Javascript 0 15.02.2016 03:22
Сортировка массива по возрастанию другого массива. vas88811 Events/DOM/Window 4 12.01.2014 10:31
Сортировка массива grindy Общие вопросы Javascript 5 17.12.2013 08:41
Сортировка массива по ключу RazZzeR Элементы интерфейса 9 21.07.2012 19:31
сортировка массива с сохранением ассоциации индексов HelpeR Элементы интерфейса 1 24.02.2010 11:00