dudeonthehorse
@dudeonthehorse
Email Developer

Получить максимальное значение атрибута?

Дана следующая структура DOM:

<div class="tags">
<span id="tag_4" class="tag">tagname</span>
<span id="tag_1" class="tag">tagname</span>
<span id="tag_6" class="tag">tagname</span>
<span id="tag_3" class="tag">tagname</span>
<span id="tag_15" class="tag">tagname</span>
<span id="tag_8" class="tag">tagname</span>
</div>



Задача:


Получить максимальное значение id+1(в данном случае должно получиться 16, но порядок и фрагментация могут быть случайными).


Если в <div class="tags"> элементов не найдено, получить единицу.
  • Вопрос задан
  • 3993 просмотра
Решения вопроса 1
BuriK666
@BuriK666
Компьютерный псих
tags=document.getElementsByClassName('tags');
for (x in tags){
  for (y in tags[x].childNodes){
    tags[x].childNodes[y].id.... ну а дальше разберетесь
  }
}

или Вам нужен весь код?
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Nesvet
@Nesvet
Разработчик
Вы используете jQuery?
Если да, то:
var maxid = 1;
$(".tags").children().each(function () {
maxid = Math.max(maxid, parseInt($(this).attr("id").replace(/[^\d]/g, ""))+1)
});
Ответ написан
spmbt
@spmbt
tags = document.querySelectorAll('span[id^=tag]');
var n =1;
for(var i in tags){
	var n2 = Number(tags[i].id.replace(\tag_/,'') );
	if(n2) > n)
		n = n2;
}
Ответ написан
@serjoga
почему бы не использовать Math.max?
var a = [2,3,1,10,25,2,4,7], maxValue = Math.max.apply(Math, a);

alert(maxValue)


P.S.: понятно что прежде нужно взять все нужные шники и привести их числовому типу, что-то вроде
var oneElementOfArray = Numbser(span.id.substr(4)) || 0
Ответ написан
MTonly
@MTonly
Веб-разработчик с 2002 года
Если атрибут id используется только для хранения числового идентификатора, то целесообразнее использовать HTML5-атрибуты с префиксом data-, предназначенные для хранения произвольных неотображаемых данных:

<ul class="tags">
	<li data-id="1">firefox</li>
	<li data-id="2">webkit</li>
</ul>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы