Захватить номер из тега id

0

У меня есть следующее:

<ul style="display: block;">

<li id="deviceTree_3" class="device">

<div class="tree-itemBody ">

<div class="triCheck"</div>

<div class="tree-arrowPlaceholder"></div>

<span class="tree-itemContent">Bath Vanity (na)</span>

</div>
</li>

Идея состоит в том, чтобы получить номер после deviceTree_ #

Проблема, с которой сталкивается, - это число может быть разной длины, т.е.... 583 или 3

это ситуация с регулярным выражением или есть что-то более простое решение

  • 3
    вы можете использовать alert(("deviceTree_3000").split("_")[1])
  • 0
    почему бы не оставить это как ответ
Показать ещё 2 комментария
Теги:

8 ответов

1
Лучший ответ

Если формат всегда "deviceTree_", за которым следует номер, вы можете использовать следующее:

var id = document.getElementsByClassName('device')[0].id;
var idNum = id.substring(id.indexOf('_')+1,id.length);
console.log(idNum);
5
var tempname=$("#deviceTree_3").attr("id").split("_");

alert(tempname[1]);//show 3

ссылка разделена

  • 0
    Есть ли причина, по которой скрипка ничего не показывает? Я могу делать что-то не так. jsfiddle.net/9NfFQ
  • 1
    см. jsfiddle.net/9NfFQ/3 @pablofiumara
Показать ещё 2 комментария
1

Если ваше числовое значение всегда стоит за _ вы можете получить его

var numberTag = $('#deviceTree_3').attr('id').split('_').pop();
0

вы можете использовать его.

alert(("deviceTree_3000").split("_")[1]);

0

Следующее регулярное выражение будет извлекать числовую часть из любого идентификатора, независимо от того, будет ли она начинаться или заканчиваться или посередине:

id = 'fda_335534'
var reg = /(?![0-9])*([0-9]+)/
var match = reg.exec(id)
console.log(match[1])

Плюс, он работает для любой структуры id.

Если идентификатор начинается всегда с 'deviceTree_', и там нет ничего после num, просто выполните:

console.log(id.replace('deviceTree_',''))
0

Ссылка: http://api.jquery.com/attribute-starts-with-selector/

Если вы хотите получить все элементы li которые имеют deviceTree_NNNN качестве ID, используя jQuery вы можете сделать следующее:

$.each( $("li[id^='deviceTree_']"), function () {
  var id_parts = $(this).attr("id").split("_");
  console.log( id_parts[1] );
});

Для одного li:

var id_parts = $("li[id^='deviceTree_']").attr("id").split("_");
console.log(id_parts[1]);
0

Просто $("#deviceTree_3").attr("id").split("_")[1]. Простые и сладкие

0

Как указывали другие, вы можете использовать split чтобы получить часть идентификатора после _. Здесь вам не нужен jQuery. Функция, принимающая элемент с id формы [anything]_[number] может быть:

function numberFromId(domElem) {
  var idParts = domElem.id.split("_");
  return idParts[1] ? idParts[1] : null;
}

Я включил этот код в эту скрипку

Ещё вопросы

Сообщество Overcoder
Наверх
Меню