2つのJavaScript関数があります。1つは(別の関数を介して)ajaxコンテンツをロードする関数で、もう1つはコールバック関数です。彼らは次のように見えます:
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が「next-reply」の要素は存在しないため変更できません。存在しない理由は、その要素の場合、コールバック関数がIDを変更するためです。目的は、ajaxコンテンツがロードされた後(つまり、ajaxPage()
関数が実行された後)にコールバックを起動させることです。
誰かが問題が何であるかを見ることができますか?プレーンJavaScriptでコールバック関数を実装するより良い方法はありますか?
PS:jQueryはありません