如果元素没有ID属性,我想生成某种标识元素的唯一标识符。
是否有一些函数可以获取DOM元素对象的对象哈希,类似于PHP中的spl_object_hash?这将是足够独特的。
答案 0 :(得分:3)
试试这个:
var uid = function (i) {
return function () {
return 'prefix-' + (++i);
};
}(0);
用法:
uid(); // "prefix-1"
uid(); // "prefix-2"
if (!el.id) el.id = uid(); // "prefix-3"
答案 1 :(得分:1)
没有"对象哈希"在JavaScript中。您可以设置自己的计数器来创建未使用的" id"值。
var getUnusedId = function() {
var counter = 0;
return function(prefix) {
prefix = prefix || "thelolcat";
var theId;
while (document.getElementById(theId = prefix + counter++));
return theId;
};
}();
这为您提供了一个函数,您可以调用它来获取类似于" thelolcat203"的ID。每次调用它时,计数器都会递增,并检查新值以确保文档中没有这样的元素。
这样做并不是完全安全的,因为您不确定某些动态添加的内容是否具有相同的ID,但是使用一些使其不太可能发生碰撞的约定并不难。 (无论如何,jQuery库在内部执行此操作。)
答案 2 :(得分:1)
这会对浏览器造成可笑的负担。你所描述的内容可以使用JS中内置的东西来完成。要么通过JS自动提供ID,要么可以通过类,子项,父项,标记名等来选择它们。