在javascript中获取DOM元素的哈希值?

6

如果元素没有ID属性,我希望生成一种能够标识该元素的唯一标识符。

是否有某个函数可以获取DOM元素对象的对象哈希值,类似于PHP中的spl_object_hash? 这将足够独特。

3个回答

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"

2

在JavaScript中没有“对象哈希”(object hash)。您可以设置自己的计数器来创建未使用的“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库在内部已经这样做了。)

1
那样会对浏览器产生极大的负担。您所描述的可以使用JS已经内置的功能来完成。通过JS自动为它们分配ID,或者可以通过类、子元素、父元素、标签名称等进行选择。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接