2012-01-25 21 views
1

我从外部来源获得一些字符串,并在我的页面上显示它们span s。简单的哈希函数,它是HTML id友好和区分大小写

我需要一种方式来获得重新使用document.getElementById()或这些字符串jQuery的$("#XXXX"),所以每串一起,我得到某种形式的标识符,我使用标识符作为span的ID。

问题是我得到的标识符可能包含字符如+例如。不允许将其作为id属性的值http://www.w3schools.com/tags/att_standard_id.asp 此外,这些标识符区分大小写。所以我想使用SHA或MD5之类的散列函数来散列我得到的标识符,然后将它们用作我的跨度的id,并且我可以再次应用散列函数来查找我的元素。

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

+0

我想看看使用正则表达式的东西,如字符串中的下划线来代替一组已知不允许的字符。 – kinakuta

+0

@kinakuta - 我的想法,但取决于他回来的东西,剥去残留物可能会留下重复的ID。 –

回答

1

能丢下标识符你,只是实现这样简单的东西:

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

你可以只递增ID与一个数字和某种字符串来开始ID。

ID的将是“A1”的跨度,“A2”等

1

我猜测,问题是,你在想以后你会得到相同的字符串和将要改造他们以同样的方式,然后使用这些来找到原始的相应元素?

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

一个精心选择的方案应保证发生碰撞的可能性(即有人给你一个字符串,它看起来像另一个字符串的转义版本)应该是非常小的,而且在任何情况下,可以立即检测到。

+0

是的,你完全理解我的问题。但事情是,我不知道除了加号之外我还能得到其他什么字符。 –