我有2個javascript函數,第一個是加載ajax內容(通過另一個函數)的函數,第二個是回調函數。它們看起來像:在函數完成之前正在啓動Javascript回調(沒有jQuery)
function createReply(callBack){
ajaxPage('test.html', 'next-reply');
callBack();
}
function updateNext(){
document.getElementById('next-reply').id = "reply-item";
}
createReply(updateNext);
正如你所看到的,我打電話了createReply()
功能,並傳遞給它的名字的回調函數,在這種情況下updateNext()
在createReply()
功能,我調用另一個功能通過ajax加載內容。當這個函數完成時,回調應該被執行。該回調會更改正在加載ajax內容的div的ID。這是哪裏的問題是發生
我收到錯誤:
Uncaught TypeError: Cannot set property 'innerHTML' of null
這是說,它不能改變id爲「下一個回覆」,因爲它不」元素的含量t存在,並且它不存在的原因是因爲回調函數改變了該元素的id。意圖是在ajax內容加載後(即在執行ajaxPage()
函數後)發生回調火災
任何人都可以看到問題出在哪裏?有沒有更好的方式在普通的JavaScript中實現回調函數?
PS:沒有jQuery的
什麼是'ajaxPage'?你是否也可以發佈源代碼?基本上,您需要將'callBack'傳遞給'ajaxPage'並在從服務器返回響應時調用它。 –
我想到了這一點,但我無法改變'ajaxPage'函數的工作方式,它在網站上廣泛使用,我不想影響網站上的其他任何內容。這肯定會破壞回調函數的意義? –
問題是您的AJAX調用異步發生,即'ajaxPage'在* *實際完成之前立即返回。如果確實'ajaxPage'不支持回調事件的概念,則需要重新考慮設計。 –