1 回答

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊
答案在這里,通俗解釋,就是,
innerHTML 操作是及時(shí)的,但是頁面渲染是延后的,等js 代碼執(zhí)行完后,有空閑,頁面才渲染,所以會(huì)導(dǎo)致看起來innerHTML 后的代碼已經(jīng)被行了,但是頁面還沒有改變,,,實(shí)際上DOM已經(jīng)改變了,但是還沒有渲染到頁面上去
舉個(gè)例子
document.body.innerHTML = 'text';
alert(document.body.innerHTML);// you will see a 'text' alert
你會(huì)先收到彈窗,但是彈窗內(nèi)容驗(yàn)證了前面的代碼已經(jīng)執(zhí)行了,但是頁面上你會(huì)發(fā)現(xiàn),還沒有改變,就是這種情況。
你操作 innerHTML ,修改了DOM,但是后面的JS代碼會(huì)繼續(xù)執(zhí)行,等代碼執(zhí)行完了,進(jìn)程空閑,頁面才會(huì)渲染,你才會(huì)發(fā)現(xiàn) innerHTML 改變了,所以看起來有延遲。
解決方法:
操作 innerHTML 的代碼放在一個(gè)函數(shù)先執(zhí)行,其他的代碼放在另一個(gè)函數(shù)執(zhí)行
添加回答
舉報(bào)