除了ID外,如果您想要一个HTML元素(比如div)的唯一标识符,我浏览了DOM,试图找到每个元素都独特的内容(例如数字或字符串),但是DOM很大,我无法在互联网上找到它。
是否有一个DOM属性只对该元素唯一?(除了ID以外,并且您没有具体说明,但它是在构建DOM时出现的。)
是否有一个DOM属性只对该元素唯一?(除了ID以外,并且您没有具体说明,但它是在构建DOM时出现的。)
根据目的,这里有两个建议。
如果您不需要将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;
};
}());
data
函数,该函数可使您将任何类型的信息分配给元素:http://api.jquery.com/data/ 实际上,jQuery本身使用唯一的ID来实现此功能,但我不确定是否有可靠的方式可以访问该ID。 - RoToRa/html/body/div[3]/div[2]/div/h1/a
但就像Pekka已经说过的那样, 这取决于你想要做什么。我认为尽管现在JavaScript引擎中提供了XPath,但你不会轻易地从DOM中获取XPath。
Internet Explorer 为每个元素都有一个“uniqueID”属性。问题在于其他浏览器不支持该属性。
Translated: Internet Explorer 为每个元素都有一个“uniqueID”属性。问题在于其他浏览器不支持该属性。jQuery11230892710877873282
的属性被赋予了一个唯一的数字。$(elem)
这样的事情,该属性就会出现。所以,由于我们同时使用了jQuery和Lodash,我设计了以下函数,无论元素实际上是否具有DOM id属性,都可以返回一个唯一的ID。_.reduce(
$(elem),
function(result, value, key) {
if(_.startsWith(key, 'jQuery'))
return value;
},
0)
expando
属性,更多信息请参见此处:
https://dev59.com/g1HTa4cB1Zd3GeqPOhvW - AsGoodAsItGets有一个 name
属性可以通过 document.getElementByName
调用。
我认为没有其他唯一标识符存在,即使你可以通过将属性(如 title
)设置为唯一值来模拟一个,然后查询该属性。但是那样很不好。
name
不是非常独特的。多个元素可以具有相同的名称。不存在 document.getElementByName
,但存在 document.getElementsByName
,其中 Elements 是复数。 - Quentin