0

forループの動作を理解できません。jquery:

 $('#btnTest').on("click", function () {

            var thumbUrl = "http:localhost/File/Modules/FileManager/Library/1041323042_12.jpg";
            var arrurl = thumbUrl.split("/");
            var i;
            var result;
            for (i = 0; i < arrurl.length - 1; i++) {
                result += arrurl[i] + '/';
            }
            alert(result);
 });

およびhtml:

<input type="button" class="ThumbLink" value="Test" id="btnTest"/>

しかしalert、結果が得られます:

undefinedhttp:localhost/File/Modules/FileManager/Library/

これはどこundefinedから来たのですか。forループの私の間違いは何ですか?ありがとうございます。

私のjsfiddle:

jsfiddle

4

4 に答える 4

1

何も初期化resultしていないので、になりますundefined

文字列をに連結しようとしているので、文字列を取得しundefined、それに連結を開始します。toString() undefined"undefined"

result空の文字列( )に初期化することで、これを停止できます""

于 2012-09-05T05:38:58.627 に答える
1

たぶん、ループを介して毎回追加するだけなので、最初は。以外設定することをお勧めします。resultundefined

:
var result = "";
for (i = 0; i < arrurl.length - 1; i++) {
    result += arrurl[i] + '/';
}
alert(result);
:

jsfiddleリンクにその変更を加えると、正しい出力が得られます。

http:localhost/File/Modules/FileManager/Library/
于 2012-09-05T05:39:08.640 に答える
1

結果に初期値を指定する必要があります。

var result = '';

それ以外の場合、URLを連結する前に結果は未定義です。

var x;
x += 'foo';  // x === 'undefinedfoo';
于 2012-09-05T05:39:32.403 に答える
0

宣言する

var result = "";

その後、それはうまくいくでしょう:)

于 2012-09-05T06:11:49.370 に答える