2012-01-25 52 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

是的,你完全理解我的問題。但事情是,我不知道除了加號之外我還能得到其他什麼字符。 –