2013-08-05 38 views
0

我試圖在回答問題之前研究回調函數 - 但是我正在編寫的東西沒有工作。我首先定義函數,然後告訴他們運行onload。 getelements()自行運行良好。回調沒有運行第二個函數

我想加載元素,然後數它們,用數學來顯示隨機索引之一。

function getelements() { 
    jQuery('#testimonial').load('http://www.example.com .testimonial'); 

} 

function countelements() { 
    var elements = jQuery('div.testimonial').length; 
    console.log(elements); 
} 

window.onload = function() { 
    getelements(function() { 

     countelements(); 
    }); 
} 
+0

Typo? 「http://www.example.com .testimonial」 –

+0

你可以**從'getelements'函數調用'.load()'調用的結果,然後在'window.onload 'handler,使用'getelements()。done(countelements);' – Ian

+0

@sethflowers不,這是'.load()'的語法。您可以在URL(是,在同一個字符串中)之後提供一個選擇器,它只加載這些元素。 http://api.jquery.com/load/#loading-page-fragments – Ian

回答

6

您正在將回調傳遞給getelements,但是您的函數不使用它。

更改getElements功能

function getelements(callback) { 
    jQuery('#testimonial').load('http://www.example.com .testimonial', callback); 
} 

JQuery的load函數將調用回調一次遙遠的資源被加載。

+0

是的!這工作絕對完美。謝謝。 所以只是爲了澄清 - 我從回調中遺漏的是隻在函數中設置回調? 那基本上告訴瀏覽器「可以等,還有更多」嗎? – itamar

+0

主要問題是你沒有給jQuery的加載函數回調。當你不提供參數時,有些函數會拋出錯誤,其他一些函數(例如大多數jQuery函數)只是假設你不需要它們(即在資源加載後你無需做任何事情)。 –

+0

謝謝,我會再讀一遍 - 但應用程序已啓動並正在運行。謝謝! – itamar

相關問題