Подтвердить что ты не робот

Уникальный идентификатор для HTML-элементов

Помимо идентификатора, если вы говорите, вам нужен уникальный идентификатор для элемента HTML (скажем, div).

Я просмотрел DOM для чего-то (например, числа или строки), уникального для каждого элемента; но DOM большой, и я не смог найти это в Интернете.

Есть ли какое-либо свойство (очевидно, в DOM), уникальное только для этого элемента? (За исключением идентификатора, и вы его не укажете, но при создании DOM)

4b9b3361

Ответ 1

Как говорит Пекка, было бы проще, если бы вы описали то, что хотите. До тех пор вот два предложения.

Если вам действительно не нужно выражать id как какую-то строку, вы можете сохранить нормальную ссылку DOM.

Если вам по какой-то причине нужно выразить его как строку, вам нужно будет назначить уникальный идентификатор самостоятельно.

var getId = (function () {
  var incrementingId = 0;
  return function(element) {
    if (!element.id) {
      element.id = "id_" + incrementingId++;
      // Possibly add a check if this ID really is unique
    }
    return element.id;
  };
}());

Ответ 2

Единственным другим идентификатором, о котором я могу думать, является XPath элемента в документе.

Например, ссылка заголовка внутри заголовка этой самой страницы имеет XPath

/html/body/div[3]/div[2]/div/h1/a

Но, как уже сказал Пекка, это зависит от того, что вы хотите сделать. И я не думаю, что вы можете легко получить Xpath из DOM в JavaScript, несмотря на то, что Xpath теперь доступен в JS-машинах.

Ответ 3

Существует атрибут name, который может быть адресован document.getElementByName.

Я не думаю, что существуют другие уникальные идентификаторы, даже если вы можете имитировать их, установив для свойства (например, title) уникальное значение и затем запросите об этом. Но это kludgy.

Для чего вам это нужно? Если вы дадите больше информации о своей ситуации, кто-то, вероятно, придумает предложение.

Ответ 4

Internet explorer имеет свойство "uniqueID" для каждого элемента. Проблема в том, что другие браузеры не поддерживают его.

Ответ 5

Вы можете использовать библиотеку или сворачивать свой собственный, чтобы создать уникальный идентификатор. JQuery имеет . Data():

Хранить произвольные данные, связанные с соответствующими элементами или возвращать значение в названном хранилище данных для первого элемента в наборе согласованные элементы.

Ответ 6

Я столкнулся с одной и той же ситуацией, и, хотя я изучал некоторые элементы DOM в инспекторе инструментов разработчика Chrome, я заметил, что все они имеют свойство типа jQuery11230892710877873282, присвоенное уникальным номером. Очевидно, что число после "jQuery" отличается каждый раз при загрузке страницы, я предполагаю, что jQuery генерирует это внутренне каждый раз, когда пытается получить доступ или манипулировать любым элементом DOM. Я немного поиграл с ним, и похоже, что элементы, которые никогда не доступны/манипулируются jQuery, могут не иметь этого свойства, но в тот момент, когда вы делаете что-то вроде $(elem), свойство будет там. Итак, поскольку мы используем jQuery и lodash, я разработал следующую функцию для возврата уникального идентификатора, независимо от того, имеет ли элемент фактический атрибут DOM.

_.reduce($(elem), function(result, value, key) { if(_.startsWith(key, 'jQuery')) return value; }, 0)