Javascript 根据I';我正在执行或调试

Javascript 根据I';我正在执行或调试,javascript,html,css,Javascript,Html,Css,问题:id为“ContainerLinkMenu”的元素在传递到js函数“centerElementYParent”时在其父div中不能正确居中,除非我使用google chrome的调试器在函数中设置断点。 如果正常执行,“getComputedStyle(f,null)”调用将返回一个“0px”表示高度,因此我最后用“-57px”表示边距顶部 评论:所以我在互联网上找到了一些有类似问题的人,但我找不到一种方法将他们的解决方案映射到我的需要。 在此方面的任何帮助都将不胜感激。 如果需要我进一步

问题:id为“ContainerLinkMenu”的元素在传递到js函数“centerElementYParent”时在其父div中不能正确居中,除非我使用google chrome的调试器在函数中设置断点。
如果正常执行,“getComputedStyle(f,null)”调用将返回一个“0px”表示高度,因此我最后用“-57px”表示边距顶部

评论:所以我在互联网上找到了一些有类似问题的人,但我找不到一种方法将他们的解决方案映射到我的需要。
在此方面的任何帮助都将不胜感激。
如果需要我进一步解释,请告诉我。
我更喜欢与我的问题相关的详细回复或进一步阅读的链接(这样我可以从这个错误中学习),但欢迎任何相关/有用的评论


函数btnMenuClicked(e){
动画菜单(e);
var menu=document.getElementById('menu');
var menuStyle=window.getComputedStyle(菜单,null);
如果(menuStyle.width=='0px'&&menuStyle.height=='0px'){
openMenu(菜单,菜单样式,e);
centerElementYParent(document.getElementById('ContainerLinkMenu')、document.getElementById('menu'));
}否则{
关闭菜单(菜单,菜单样式,e);
}
}

这可能是因为要居中的元素尚未渲染到正确的位置。尝试添加setTimeout以调用函数

openMenu(menu, menuStyle, e);
setTimeout(function() {
      centerElementYParent(document.getElementById('containerLnkMenu'), document.getElementById('menu'));
}, 800); 

谢谢我会尽快给你的。你能解释一下为什么在调用函数之前元素不能正确呈现吗?@marmitegek我只是在这里做一个假设,因为你在css中使用了转换。。由于动画效果,在您调用“openMenu”函数之后,它可能没有达到其完整大小。我同意这一假设。这对我来说很有意义。我会将此标记为答案,但我想我可能只是硬编码此元素的边距。我不知道——我会搞点别的,看看我最喜欢什么。谢谢你的帮助。