javascript - 我怎么监听innerHTML的修改何时渲染完成?
巴扎黑
巴扎黑 2017-04-11 09:13:15
[JavaScript讨论组]

例如我用button改innerHTML

我就想知道怎么监听#test的innerHTML什么时候渲染完成,然后我就可以获取#other?

或者有其他好的办法也可以,我的目的就是动态生成DOM,然后获取这些DOM,请指教~

巴扎黑
巴扎黑

全部回复(6)
PHP中文网

不需要监听,innerHTML的修改不是异步的,修改完之后才会进行后边代码的执行。
直接获取就可以了。
并不需要setTimeout。

伊谢尔伦
var add = function() {
    document.getElementById('test').innerHTML = '<p id="other">many p</p>'
    setTimeout(function(){
        //这时候就渲染好了
    },0);
}
黄舟
function a(callback){
//...
returen callback()
}

function b(){
//....
}

a(b);

Javascript异步编程的4种方法

怪我咯

好像没有办法可以获取到。。
我遇到的这种情况只能用定时器一直去取#other,如果有,就代表渲染好了。。没有的话继续。。

怪我咯

这个来怎么监听?你那方法执行完了不就渲染完了嘛?那个函数处理机制不是从上往下吗,你吧后续的方法写在渲染方法后面啊,还有就是,你动态添加的节点,坑爹的JS是获取不到的,也就是说,你想给#other直接绑定事件,修改样式,想都别想...所以你就只能把事件处理绑定到它的父节点上

巴扎黑
var p = document.createElement('p');
p.innerHTML = 'many p';
p.id = 'other';
document.getElementById('test').appendChild(p);

这样就可以了,而且添加完之后就可以直接获取了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号