我试图让一个脚本在window.location.hash中使用多个值,但是我遇到了jquery的$ .extend()函数问题
我尝试了两种方法,但两种方法都没有成功。
var MultiHash = {
params: {},
getHash: function () {
var hashString = document.location.hash.replace('#', '').split('&');
for (var i=0; i < hashString.length; i++) {
var key = hashString[i].split('=')[0];
var value = decodeURIComponent(hashString[i].split('=')[1]);
// First way
var a = {key: value};
// Second way
var a = {};
a[key] = value;
$.extend(params, a);
}
return params;
},
...
}
有人看到了这个问题吗?
答案 0 :(得分:3)
首先你要写:
$.extend(this.params, a); or you cant access param
可能还有其他问题。
修改强>
在我看来你回归a而不是this.params是有道理的。
$.extend(a,this.params);
return a
答案 1 :(得分:3)
您尝试做的事情有两个问题。第一个是引用问题,因为该对象的params变量应该被引用为this.params
。第二个问题是您没有保存对象扩展的结果。所有这些都发生在以下行:
$.extend(params, a);
它应该读取这样的内容:
this.params = $.extend(this.params, a);
答案 2 :(得分:0)
试试这个:
var MultiHash = {
params: {},
getHash: function () {
var hashString = document.location.hash.replace('#', '').split('&');
var a = [];
for (var i=0; i < hashString.length; i++) {
var key = hashString[i].split('=')[0];
var value = decodeURIComponent(hashString[i].split('=')[1]);
a.push(key + ":'" + value + "'");
}
$.extend(this.params,(new Function("return {" + a.Join(",") + "}"))());
return this.params;
},
...
}