0
externalCSSContents = [];

function getExternalCSSContents(){
        href = document.styleSheets[0].href;
        $.post(href, function(result){
            externalCSSContents.push(result);
            alert(externalCSSContents.length); // 1
        });
}

getExternalCSSContents();
alert(externalCSSContents.length); // 0

$ .post()メソッド配列externalCSSContentsのスコープがローカルである理由を誰かに説明してもらえますか?

4

3 に答える 3

1

AJAXは非同期であり、アラート後にポストコールバックが実行されます

(私は今日ここで何度も「非同期」という作品を入力しましたが、今ではそれを綴る方法を知っています)

于 2012-04-13T13:13:58.140 に答える
1

これは、ajaxリクエストの実行が終了しておらず、配列の内容を警告しているためです。

代わりにこれを行うことができます。

function getExternalCSSContents(){
    href = document.styleSheets[0].href;
    return  $.post(href, function(result){ externalCSSContents.push(result); });
}

$.when( getExternalCSSContents() ).then(function(){ 
        alert(externalCSSContents.length);
}); 
于 2012-04-13T13:14:04.597 に答える
1

これは、非同期リクエストが原因です。これがAJAXの仕組みです。たとえば、 Wikiでajaxの詳細を読む

于 2012-04-13T13:14:05.580 に答える