【问题标题】:Generate a fingerprint (unique id) for each element in html为html中的每个元素生成一个指纹(唯一id)
【发布时间】:2015-05-15 11:37:48
【问题描述】:

我正在尝试为 html 正文中的每个元素生成一个指纹。

我的第一次尝试是循环 body 中的所有元素并为其分配一个 ID。

现在我正在分配一个输入标签

var i = 0;
$.each($('#container').find("input"), function(key, value) {
   $(this).attr("data-index", this.tagName.toLowerCase() + "-" + i);
});

但是如果我在两个输入标签之间动态添加一个输入标签,那么我将不得不重新分配所有数据索引,这是我不想做的。

我也不想跟踪最后添加的 ID。

第二次尝试我正在考虑根据输入标签属性生成指纹,以便该指纹对于该页面是唯一的。

请注意,任何时候打开页面,都应该生成相同的指纹值。

这种方式正确吗? 如果是,那么如何生成该指纹?

如果没有,请任何人将我重定向到其他方式吗?

任何帮助将不胜感激。

提前谢谢你。

【问题讨论】:

    标签: javascript jquery html tracking


    【解决方案1】:

    我本来打算建议一个 GUID(全局唯一标识符),但后来您说每次生成页面时都需要相同的值。既然是这样,我建议使用某种使用常量种子的“唯一随机数生成器”。我不知道这样的事情是否存在,但是这样的系统会在每次加载页面时为您已经存在的标签提供相同的指纹,然后在动态添加标签时,一个新的(但与上一个页面加载相同)会生成指纹。

    其中的诀窍是创建所说的“唯一随机”数字生成器。或者,您可以只使用非唯一随机数生成器来构建 guid。即,“给我接下来的 10 个 0 到 9 之间的随机数”,这就是你的 ID。您极不可能以这种方式生成两个等值的指纹。只是不要忘记为生成器准备一个种子。

    我对这个项目一无所知,但据说这里有一个可种子生成器:http://davidbau.com/archives/2010/01/30/random_seeds_coded_hints_and_quintillions.html

    【讨论】:

    • 在这种情况下,您可以只使用从 0 或 1 开始的全局计数器,就像 OP 第一次尝试一样,因为实际值是什么并不重要(并且没有碰撞风险)。
    • @Russell Uhl 谢谢你的回答。我会考虑的,然后告诉你。非常感谢。
    • @K3N 我不希望这样。因为我想在未来用这些独特的数字做点什么。感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 2016-01-23
    • 1970-01-01
    相关资源
    最近更新 更多