Javascript 简单的散列函数,HTML id友好且区分大小写

Javascript 简单的散列函数,HTML id友好且区分大小写,javascript,jquery,html,md5,hash,Javascript,Jquery,Html,Md5,Hash,我从外部源获取一些字符串,并在页面上的spans中显示它们 我需要一种方法来使用document.getElementById()或jQuery的$(“#XXXX”)返回到这些字符串,因此,随着每个字符串我得到某种标识符,我使用该标识符作为span的ID 问题是,我得到的标识符可能包含字符,例如+。不允许将其作为id属性的值 此外,这些标识符区分大小写。所以我考虑使用一个散列函数,比如SHA或MD5,对我得到的标识符进行散列,然后将它们用作我的跨度的ID,我可以再次应用散列函数来查找我的元素 对

我从外部源获取一些字符串,并在页面上的
span
s中显示它们

我需要一种方法来使用
document.getElementById()
或jQuery的
$(“#XXXX”)
返回到这些字符串,因此,随着每个字符串我得到某种标识符,我使用该标识符作为
span
的ID

问题是,我得到的标识符可能包含字符,例如
+
。不允许将其作为
id
属性的值 此外,这些标识符区分大小写。所以我考虑使用一个散列函数,比如SHA或MD5,对我得到的标识符进行散列,然后将它们用作我的跨度的ID,我可以再次应用散列函数来查找我的元素


对于这样一个简单的功能来说,这似乎很复杂。有更好的方法吗?或者可能是一个非常简单的哈希函数,可以保证
id
友好的字符和大小写敏感度?(HTML的<代码> ID <代码>不是区分大小写的,这是考虑哈希函数的另一个原因)

你能放弃你得到的标识符吗?只需执行这样简单的事情:

var counter = 0;
function uniqueId(){
    return "Id" + ++counter;
}

您可以用一个数字和某种字符串来增加id,以开始id


span id将是“a1”、“a2”等。

我猜问题是,您以后会想得到相同的字符串,并希望以相同的方式转换它们,然后使用它们来查找原始的对应元素

如果是这样,你只需要仔细清理你的字符串。一系列正则表达式可以帮助您将无效字符映射为有效字符,并使大写字母唯一。例如,您可以将
“A”
转换为
“-A-”
,将
“+”
转换为
“-plus-”


精心选择的方案应保证碰撞的可能性(即某人给您的字符串看起来像另一个字符串的转义版本)非常小,并且在任何情况下,立即可检测。

我会考虑使用正则表达式将已知的一组不允许的字符替换为字符串中的下划线。@kinakuta-我也这么认为,但根据他得到的信息,去掉积垢可能会留下重复的ID。是的,你完全正确地理解我的问题。但问题是我不知道除了加号我还能得到什么。。