这让我烦恼。
我在doc的开头设置一个数组:
var idPartner;
var myar = new Array();
myar[0] = "http://site.com/"+idPartner;
我在地址上得到一个数字,这是合作伙伴的身份。大。但我试图设置它没有成功:
$.address.change(function(event) {
idPartner = 3;
alert(idPartner);
}
确定。警报它给了我正确的号码,但没有设置它。
怎么了?
谢谢!
答案 0 :(得分:4)
更改变量的值不会重新设置数组中的值。这只是javascript无法自动完成的事情。您必须重新生成数组才能获得新ID。您可以将id添加到使用数组的值,而不是预先设置包含id的数组中的值吗?
编辑:例如,你会这样做:
var myArray = [];
var myId = 0;
myArray[0] = "http://foo.com/id/";
当你需要使用数组中的值时,你会这样做:
var theVal = myArray[0] + myId;
答案 1 :(得分:1)
试试这个:
var myvar = ["http://site.com/"];
$.address.change(function(event) {
myvar[1] = 3;
}
然后使用myvar.join(),您需要完整的网址。
答案 2 :(得分:0)
这里的问题是在
行myar[0] = "http://site.com/"+idPartner;
..执行字符串连接,这意味着您将复制结果字符串复制到索引位置0的数组中。
因此,稍后设置idPartner
时,它不会对以前复制的字符串产生任何影响。为了避免这种影响,您可以在idPartner
变量更新时再次构造字符串,或者创建一个对象,并在需要时对其进行评估...
var MyObject = function(){
this.idPartner = 0; //default value
};
MyObject.prototype.getUrl = function(){
return "http://site.com/" + this.idPartner;
};
通过这种方式你可以像
一样使用它var myGlblUrlObj = new MyObject();
$.address.change(function(event){
myGlblUrlObj.idPartner = ... /setting it here
});
稍后您可以使用
始终获取正确的网址myGlblUrlObj.getUrl();
现在显然这取决于你情况的复杂程度。也许建议的数组解决方案可能也可以工作,虽然我更喜欢将它封装在对象的某个地方以获得更好的可重用性。
答案 3 :(得分:0)
myar[0] = "http://site.com/" + idPartner;
在此行之后myar[0] = "http://site.com/undefined"
,它与变量idPartner
无关。
因此,更改idPartner
的值后会影响myar[0]
的值。
您需要更改myar[0]
本身的值。