Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.07.2014, 11:01
Аспирант
Отправить личное сообщение для Urukhay Посмотреть профиль Найти все сообщения от Urukhay
 
Регистрация: 04.07.2014
Сообщений: 51

Выборка максимального значения ID.
Как можно узнать максимальное значение id среди класса "N"?
То есть среди этого:
<div class="N" id="1"> </div>
<div class="N" id="2"> </div>
<div class="N" id="3"> </div>
<div class="N" id="4"> </div>
<div class="N" id=N...> </div>
...

Нужно скриптово узнать тот div, у которого максимальный id. При условии, что мы не знаем сколько всего этих div'ов.
Ответить с цитированием
  #2 (permalink)  
Старый 07.07.2014, 11:14
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script>
$(document).ready(function() {
  var div_ids = [];
  
  $("div.N").each(function() {
    div_ids.push(this.id); //Перебираем все дивы и заносим в массив их идентификаторы
  });
  
  alert(div_ids.sort().pop()); //Сортируем массив по возрастанию и берем последний элемент
});
</script>
</head>
<body>
<div class="N" id="3"> </div>
<div class="N" id="1"> </div>
<div class="N" id="4"> </div>
<div class="N" id="2"> </div>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 07.07.2014, 11:44
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Можно сделать гораздо "дешевле", за один проход:
<div class="N" id="3"> </div>
<div class="N" id="1"> </div>
<div class="N" id="4"> </div>
<div class="N" id="2"> </div>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script>

var $elements = $(".N");
var element = Array.prototype.reduce.call($elements, function (revious, current) {
    return current.id > revious.id ? current : revious;
});

alert( element.id );

</script>
Ответить с цитированием
  #4 (permalink)  
Старый 07.07.2014, 21:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Sweet,
на всякий случай
+current.id > +revious.id

и Erolast, тоже можно над этим подумать.

Последний раз редактировалось рони, 07.07.2014 в 21:30.
Ответить с цитированием
  #5 (permalink)  
Старый 07.07.2014, 22:29
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

рони, ага
alert('12' > '2')
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 07.07.2014, 23:15
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

<body>
  <div class="N" id="3"></div>
  <div class="N" id="1"></div>
  <div class="N" id="4"></div>
  <div class="N" id="2"></div>
  <script>
    var elements = document.querySelectorAll('div.N');
    var len = elements.length;
    for (var rez = 0; len--;) {
      if (elements[len].id > rez) {
        rez = elements[len].id;
      }
    }

    alert(rez);
  </script>
</body>

>Будет работать быстрее и в IE8
Ответить с цитированием
  #7 (permalink)  
Старый 07.07.2014, 23:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Poznakomlus,
не будет работать как и коды выше и правильность rez = 0 rez = elements[len].id; под вопросом для таких вычислений -- лучше хранить индекс а не значение
Ответить с цитированием
  #8 (permalink)  
Старый 08.07.2014, 00:07
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

рони,
не совсем понял, что ты имеешь ввиду
rez = 0 - инициализировал переменную
rez = elements[len].id; - намекаешь, что может не будет id у элемента, так в примере у всех есть
лучше хранить индекс а не значение - эт вообще не понял, индекс чего, и где xранить
задача в получении максимального значения здесь используем сравнение строки с числом
http://javascript.ru/comparison-operators
Ответить с цитированием
  #9 (permalink)  
Старый 08.07.2014, 00:16
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

Poznakomlus,
<body>
  <div class="N" id="3"></div>
  <div class="N" id="11"></div>
  <div class="N" id="4"></div>
  <div class="N" id="2"></div>
  <script>
    var elements = document.querySelectorAll('div.N');
    var len = elements.length;
    for (var rez = 0; len--;) {
      if (elements[len].id > rez) {
        rez = elements[len].id;
      }
    }
 
    alert(rez);
  </script>
</body>
Ну постом выше же писали...

Sweet, накой jquery? Чем те querySelector не угодил?
__________________
29375, 35

Последний раз редактировалось Aetae, 08.07.2014 в 00:25.
Ответить с цитированием
  #10 (permalink)  
Старый 08.07.2014, 00:20
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от Aetae
Ну постом выше же писали..
да протупил
<div class="N" id="3"></div>
<div class="N" id="1"></div>
<div class="N" id="4"></div>
<div class="N" id="2"></div>
<b>Будет работать быстрее и в IE8</b>
<script>
  var elements = document.querySelectorAll('div.N');
  var len = elements.length;
  for (var rez = 0; len--;) {
    if (elements[len].id > rez) {
      rez = +elements[len].id;
      console.log(typeof rez);
    }
  }

  alert(rez);
</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Присвоение значения тегу value GreenJo Javascript под браузер 3 28.04.2014 10:43
значения выбранных checkbox Mawr jQuery 4 21.04.2014 13:27
Десятичные значения в он-лайн калькуляторе. Natali_SPb Общие вопросы Javascript 3 03.11.2013 21:46
получение значения из классов karmis Events/DOM/Window 1 14.10.2011 19:09
Вытащить со страницы все значения name и value из тегов <input> qwr938 Общие вопросы Javascript 8 13.02.2011 15:16