Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中的全局变量_Javascript_Jquery - Fatal编程技术网

Javascript中的全局变量

Javascript中的全局变量,javascript,jquery,Javascript,Jquery,这让我很恼火 Im在文档开头设置数组: var idPartner; var myar = new Array(); myar[0] = "http://site.com/"+idPartner; 我从地址上得到一个号码,这是合伙人的id。伟大的但我试图设置它却没有成功: $.address.change(function(event) { idPartner = 3; alert(idPartner); } 嗯。警报告诉我正确的号码,但没有设置 怎么了 谢谢 更改变

这让我很恼火

Im在文档开头设置数组:

 var idPartner;

 var myar = new Array();
 myar[0] = "http://site.com/"+idPartner;
我从地址上得到一个号码,这是合伙人的id。伟大的但我试图设置它却没有成功:

 $.address.change(function(event) {
   idPartner = 3;
   alert(idPartner);
 }
嗯。警报告诉我正确的号码,但没有设置

怎么了


谢谢

更改变量的值不会在数组中重新设置值。这是javascript无法自动完成的。您必须重新生成数组才能获得新id。您是否可以将id添加到使用数组的值中,而不是在包含id的数组中预先设置值

编辑:例如,您将执行以下操作:

var myArray = [];
var myId = 0;
myArray[0] = "http://foo.com/id/";
当需要使用数组中的值时,可以执行以下操作:

var theVal = myArray[0] + myId;

更改变量的值不会在数组中重新设置值。这是javascript无法自动完成的。您必须重新生成数组才能获得新id。您是否可以将id添加到使用数组的值中,而不是在包含id的数组中预先设置值

编辑:例如,您将执行以下操作:

var myArray = [];
var myId = 0;
myArray[0] = "http://foo.com/id/";
当需要使用数组中的值时,可以执行以下操作:

var theVal = myArray[0] + myId;
试试这个:

var myvar = ["http://site.com/"];


$.address.change(function(event) {
   myvar[1] = 3;
 }
然后在需要完整url的地方使用myvar.join()

var myvar = ["http://site.com/"];


$.address.change(function(event) {
   myvar[1] = 3;
 }

然后在需要完整url的地方使用myvar.join()

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();

很明显,这取决于你处境的复杂性。也许建议的阵列解决方案也能起作用,不过我更喜欢将其封装在对象中的某个位置,以便更好地重用。

这里的问题在于

myar[0] = "http://site.com/"+idPartner;
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();
很明显,这取决于你处境的复杂性。也许建议的阵列解决方案也可以工作,尽管我更喜欢将其封装在对象中的某个位置,以便更好地重用

myar[0] = "http://site.com/" + idPartner;
在这一行之后,
myar[0]=”http://site.com/undefined“
它与变量
idPartner
没有任何关系

因此,在此之后更改
idPartner
的值将影响
myar[0]
的值

您需要更改
myar[0]
本身的值

在这一行之后,
myar[0]=”http://site.com/undefined“
它与变量
idPartner
没有任何关系

因此,在此之后更改
idPartner
的值将影响
myar[0]
的值


您需要更改
myar[0]
本身的值。

是否可以尝试在一个数组中重现该问题?请使用
[]
文字符号,而不是
新数组
。(它不会解决这个特殊问题,但无论如何会更好)。它是如何警告正确的数字,而不是设置它的?@Lucas Veiga我建议开始对数组使用“var myar=[];”。如果警告给你正确的数字,那么它已经设置好了!我很困惑。为什么你认为它没有设置?你能试着在一个数组中重现这个问题吗?用
[]
文字符号代替
新数组
。(它不会解决这个特殊问题,但无论如何会更好)。它是如何警告正确的数字,而不是设置它的?@Lucas Veiga我建议开始对数组使用“var myar=[];”。如果警告给你正确的数字,那么它已经设置好了!我很困惑。为什么你认为它没有被设置?在那一天,ALGOL有一个按名字传递的选项,允许完成这类事情。奇怪,嗯?太好了。是的。我创建了一个函数,用我想要的id为我设置它。谢谢在那一天,ALGOL有一个通过名字传递的选项,可以完成这类事情。奇怪,嗯?太好了。是的。我创建了一个函数,用我想要的id为我设置它。谢谢