Javascriptのグローバル変数

これは私を迷惑にしています。

私はdocの先頭に配列を設定しています:

 var idPartner;

 var myar = new Array();
 myar[0] = "http://site.com/"+idPartner;

そして、アドレスの上に番号をつけている私は、パートナーのIDです。すばらしいです。しかし、私は成功せずにそれを設定しようとしている:

 $.address.change(function(event) {
   idPartner = 3;
   alert(idPartner);
 }

OK。警報は私に正しい番号を与えているが、それを設定していない。

どうしましたか?

ありがとう!

0
new Array の代わりに [] リテラル表記を使用してください。 (この特定の問題は解決しませんが、とにかく優れています)。
追加された 著者 hugomg,
原因は、myはidでmyar [0]に設定されたURLにアクセスしようとしていますが、動作していません。それは私に未定義を与える。
追加された 著者 Lucas Veiga,
jsfiddle.net で問題を再現してみることはできますか?
追加された 著者 Alex Turpin,
アラートによって正しい番号が与えられたら、それは設定されています!よくわかりません。なぜそれは設定されていないと思いますか?
追加された 著者 Andy,
@ルーカスVeiga私は "var myar = [];を使用して開始することをお勧めします配列の場合
追加された 著者 Bakudan,
正しい番号をどのように警告しますが、それを設定しませんか?
追加された 著者 Jack,

4 答え

変数の値を変更しても、配列内の値は再設定されません。それはジャバスクリプトが自動的に行うことができないものです。新しいIDを持つためには、配列を再生成する必要があります。 idを含む配列の値を事前に設定する代わりに、配列を使用する値にidを追加できますか?

編集:例えば、あなたはそうするでしょう:

var myArray = [];
var myId = 0;
myArray[0] = "http://foo.com/id/";

配列の値を使用する必要がある場合は、次のようにします。

var theVal = myArray[0] + myId;
4
追加された
ALGOLには、この種のものを許可するパス・バイ・ネーム・オプションがありました。奇妙な、ああ?
追加された 著者 hugomg,
すばらしいです。それでしたか?私は自分が望むものを使って私のために設定する機能を作りました。ありがとう!
追加された 著者 Lucas Veiga,

これを試して:

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


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

完全なURLが必要な場所でmyvar.join()を使用します。

1
追加された

ここの問題は、

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

後でいつでも正しいURLを取得することができます

myGlblUrlObj.getUrl();

今は明らかにあなたの状況の複雑さにかかっています。おそらく、提案された配列解決法もうまくいくかもしれませんが、再利用性を高めるためにオブジェクトのどこかにカプセル化しておくことをお勧めします。

0
追加された
myar[0] = "http://site.com/" + idPartner;

この行の後には、 myar [0] = "http://site.com/undefined" であり、変数 idPartner とは関係ありません。

ですから、 idPartner の値を変更すると、 myar [0] の値に影響します。

myar [0] 自体の値を変更する必要があります。

0
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript