Javascript子回调?

Javascript子回调?,javascript,html,Javascript,Html,我需要使用以下代码将HTML5视频添加到页面: document.querySelector("#mydiv").appendChild(video); console.debug(document.querySelector("video").clientWidth); 我的问题是,第二行返回0,因为video标记加载要播放的视频需要一段时间。如果在加载页面后在控制台中手动键入第二行,则会得到实际值。有没有比使用超时来定期检查值是否已更新更好的方法来获取此值?Javascript是单线程的。

我需要使用以下代码将HTML5视频添加到页面:

document.querySelector("#mydiv").appendChild(video);
console.debug(document.querySelector("video").clientWidth);

我的问题是,第二行返回0,因为
video
标记加载要播放的视频需要一段时间。如果在加载页面后在控制台中手动键入第二行,则会得到实际值。有没有比使用超时来定期检查值是否已更新更好的方法来获取此值?

Javascript是单线程的。 您应该将代码放到事件循环中,这允许js和DOM一起工作

试试看:

document.querySelector("#mydiv").appendChild(video);
setTimeout(function(){
  console.debug(document.querySelector("video").clientWidth);
});

向元素添加
video.onloadstart
事件

video.onloadstart(getClientWidth);
document.querySelector("#mydiv").appendChild(video);
function getClientWidth() {
    console.debug(document.querySelector("video").clientWidth);
}

阅读更多。

我需要做一些类似的事情,偶然发现了这个问题,因为我认为可能会有一个回调。结果是没有。因此,这里有另一种使用的方法

它看起来像这样:

//准备新元素
让video=document.createElement('video');
//将元素添加到DOM中。适用于任何元素
document.querySelector(“mydiv”).appendChild(视频);
//更新DOM将导致重新渲染,我们可以将其挂接到
window.requestAnimationFrame(()=>{
console.debug(document.querySelector(“视频”).clientWidth);
});

视频转到这里:
appendChild
回调?你在找一个活动吗?例如?没错!谢谢我不知道这件事。如果你贴出这样的回复,我会接受的。