HTML元素的唯一标识符

Oma*_*bid 25 html javascript dom

除了ID之外,如果你说,你想要一个HTML元素的唯一标识符(比如说div).

我浏览了DOM,了解每个元素的独特之处(如数字或字符串); 但DOM很大,我没能在互联网上找到它.

是否有任何属性(显然在DOM中)仅对该元素是唯一的?(除了ID之外,您也没有指定它,但是在构造DOM时会出现)

RoT*_*oRa 17

正如佩卡所说,如果你想描述你想做什么会更容易.在此之前,这里有两个建议.

除非您确实需要将id表示为某种字符串,否则可以保存正常的DOM引用.

如果由于某种原因确实需要将其表示为字符串,那么您需要自己分配一个唯一的ID.

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;
  };
}());
Run Code Online (Sandbox Code Playgroud)

  • 因为你正在使用jQuery,所以我应该让你知道它的`data`函数,你可以用它来为元素分配任何类型的信息:http://api.jquery.com/data/实际上jQuery本身使用了一个unqiue ID实现它,但我不确定是否可以以任何可靠的方式访问该ID. (3认同)

Gor*_*don 5

我能想到的唯一其他标识符是文档中元素的 XPath。

例如,这个页面标题内的标题链接的 XPath 为

/html/body/div[3]/div[2]/div/h1/a
Run Code Online (Sandbox Code Playgroud)

但就像 Pekka 已经说过的,这取决于你想做什么。而且我不认为你可以轻松地从 JavaScript 的 DOM 中获得 Xpath,尽管 Xpath 现在在 JS 引擎中可用。

  • @Andy Xpath 在现代浏览器中可用。我只是不认为有一种方法可以通过某种本机函数将 Xpath 获取到节点。至少我不知道任何。 (2认同)

Don*_*onO 5

Internet Explorer 的每个元素都有一个属性“uniqueID”。问题是其他浏览器不支持它。