用这个:
var hash_array = location.hash.substring(1).split('&');
var hash_key_val = new Array(hash_array.length);
for (var i = 0; i < hash_array.length; i++) {
hash_key_val[i] = hash_array[i].split('=');
}
现在hash_key_val[index]
是一个双元素数组,其中第一个元素是键 - 参数名称,第二个是它的对应值。
编辑:
在研究了这个案例一段时间后,我觉得我需要重写它——返回一个对象而不是数组数组。我看到balafi以前做过,但我不能忍受我的回答是如此违反直觉和臃肿的用法。小提琴中的完整示例。函数源在这里:
function getParameters(location) {
if (typeof location === 'undefined') {
location = window.location;
}
var hashParams = new (function Params() {})();
if (location.hash.length === 0) {
return hashParams;
};
var hashArray = location.hash.substring(1).split('&');
for (var i in hashArray) {
var keyValPair = hashArray[i].split('=');
hashParams[keyValPair[0]] = keyValPair[1];
}
return hashParams;
}