Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.02.2012, 05:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Отсортировать nodelist
Может кто захочет голову поломать ...
Задача: есть контейнер в данном случае это див list, изначально в нём элементы находятся упорядоченно, затем их надо поменять местами по определённому порядку, для примера используется рандомный массив arr ... макет ниже ... надеюсь я понятно всё описал ... для наглядности элементы содержат цифры, но сортировать надо ориентируясь не на них ... id тоже нет.
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<title></title>
</head>
<body>
<div id="test"></div>
<div id="list" ></div>
<input type="button" value="go"  onclick="n(arr.sort(rand))"/>
<script type="text/javascript">
var arr = [];
var list = document.getElementById('list');
var test = document.getElementById('test');
function spisok(c) {
    for (var a = 0; a < c; a++) {
        var b = document.createElement("P");
        b.innerHTML = "Элемент списка №" + a;
        list.appendChild(b);
        arr[a] = a
    }
    test.innerHTML = arr
};

function rand() {
    return .5 - Math.random()
}
spisok(5)

var n = function (c) {
        var e = list.getElementsByTagName("p");
        test.innerHTML = c;

         // код ?

        };

</script>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 07.02.2012, 06:17
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от рони
Может кто захочет голову поломать ...
зачем ломать голову? уж давно переломали ее..
метод getElementsByTagName итак возвращает элементы в отсортированном порядке.
Ответить с цитированием
  #3 (permalink)  
Старый 07.02.2012, 07:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Сообщение от devote
метод getElementsByTagName итак возвращает элементы в отсортированном порядке
???
Сообщение от рони
их надо поменять местами по определённому порядку
порядок меняеться несколько раз, а getElementsByTagName выдаст текущее положение а не то что необходимо установить
Ответить с цитированием
  #4 (permalink)  
Старый 07.02.2012, 07:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

devote,
понажимайте на кнопку go, элементы должны занимать тот порядок что отображаеться в диве test
Ответить с цитированием
  #5 (permalink)  
Старый 07.02.2012, 08:00
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от рони
понажимайте на кнопку go, элементы должны занимать тот порядок что отображаеться в диве test
а кто вам мешает их расположить так как вам угодно?
Ответить с цитированием
  #6 (permalink)  
Старый 07.02.2012, 14:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

devote,
Если вам не трудно предложите свой алгоритм решения?
Ответить с цитированием
  #7 (permalink)  
Старый 07.02.2012, 17:59
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<title></title>
</head>
<body>
<div id="test"></div>
<div id="list" ></div>
<input type="button" value="go"  onclick="n(arr.sort(rand))"/>
<script type="text/javascript">
var arr = [];
var list = document.getElementById('list');
var test = document.getElementById('test');
function spisok(c) {
    for (var a = 0; a < c; a++) {
        var b = document.createElement("P");
        b.innerHTML = "Элемент списка №" + a;
        list.appendChild(b);
        arr[a] = a
    }
    test.innerHTML = arr
};

function rand() {
    return .5 - Math.random()
}
spisok(5)



elem_arr = [].slice.call( list.getElementsByTagName("p") ); //преобразуем в массив, для ие свой вариант написать надо бут.

var n = function (c) {
        test.innerHTML = c;

        for(var i = c.length, j=0; j<i ; j++ ) list.appendChild( elem_arr[ c[j] ] )

        };

</script>
</body>
</html>

на коленке, но суть должна быть ясна.
__________________
29375, 35
Ответить с цитированием
  #8 (permalink)  
Старый 07.02.2012, 22:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Aetae,
Спасибо!!!
Вариант с учётом ИЕ
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<title></title>
</head>
<body>

<div id="list" ></div><div id="test"></div>
<input type="button" value="go"  onclick="n(arr.sort(rand))"/>
<script type="text/javascript">
var arr = [];
var list = document.getElementById('list');
var test = document.getElementById('test');
function spisok(c) {
    for (var a = 0; a < c; a++) {
        var b = document.createElement("P");
        b.innerHTML = "Элемент списка №" + a;
        list.appendChild(b);
        arr[a] = a
    }
    test.innerHTML = arr
};

function rand() {
    return .5 - Math.random()
}
spisok(5)

var n = function () {
        for (var c = list.getElementsByTagName("p"), d = [], a = 0; a < c.length; a++) d[a] = c[a];
        return function (a) {
            for (var b = 0; b < a.length; b++) list.appendChild(d[a[b]]);
            test.innerHTML = a
        }
    }();

</script>
</body>
</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите прикрутить forEach к HTMLCollection и NodeList ­­­ Общие вопросы Javascript 14 14.11.2011 12:07
Чем отличаются объекты HTMLCollection и NodeList? Cooskon Events/DOM/Window 4 12.09.2010 18:32
как отсортировать пришедшие данные ajax? FRIE jQuery 9 15.07.2010 16:22
Отсортировать список на страничке jay (X)HTML/CSS 4 31.08.2009 19:18