-1

How can i use my rand in window name in the following code :

var rand = 185656;
setTimeout("win+rand+2 = window.open('url'+secid , '_blank')",2000);

+rand+ not work

4

6 に答える 6

2

に文字列を渡さないでくださいsetTimeout。代わりに関数を渡し、グローバル プロパティを明示的に on に設定しますwindow。これにより、角括弧表記を使用できるようになります。

setTimeout(function () {
    window["win" + rand + "2"] = window.open("url" + secid, "_blank");
}, 2000);

setTimeout(or )に文字列を渡さない理由は、危険な可能性があるsetIntervalのエイリアスであるためです。eval

現在持っているものは、参照エラーを生成します。これは事実上、これを行うのと似ていますが、これは明らかに機能しません。

"a" + "b" = "c"; // ReferenceError: Invalid left-hand side in assignment
于 2013-03-28T11:44:46.013 に答える
1

まず、文字列を setTimeout に渡さないでください。代わりにコールバック関数を使用してください。次に、変数は、連結される文字列 (引用符) の外側にある必要があります。

var rand = 185656;
setTimeout(function() {
    window["win" + rand + "2"] = window.open('url'+secid , '_blank');
}, 2000);
于 2013-03-28T11:44:51.720 に答える
1

引用符の外にある必要があります。

setTimeout("win"+rand+"2 = window.open('url'+secid , '_blank')",2000);
于 2013-03-28T11:42:58.753 に答える
1

String をもう一度「開いて」「閉じる」必要があります。

setTimeout("win" + rand + "2 = window.open('url'" + secid + " , '_blank')",2000);

非常に基本的なことについては、この記事を参照してください。

それとは別に、実行可能コードを渡すべきではありませんsetTimeout( eval'd を取得します)。関数参照または無名関数を使用してください。

また、このような変数名を構築することも悪い考えです。そのためのオブジェクトとキーを調べます。

あなたがすることができます:

setTimeout(function(){
    var rand = 185656;
    window['win' + rand + '2'] = window.open('url'+secid , '_blank'); //creates a global variable by adding a property to the global object
}, 2000);
于 2013-03-28T11:43:12.423 に答える
0

引用符が問題を起こしている可能性があります

setTimeout("win"+parseInt(rand)+"2 = window.open('url'+secid , '_blank')",2000);
于 2013-03-28T11:44:17.623 に答える
0

setTimeout("win" + rand + "2 = window.open('url'+secid , '_blank')",2000);

于 2013-03-28T11:44:57.513 に答える