函数不'除非调用两次,否则无法正确执行
Function doesn't correctly perform unless it is called twice
一些背景:我正在使用JavaScript将高度随父div条件而变化的子div垂直居中。居中函数如下:
function autoCenter()
{var firstline = document.getElementById("ntext");
var secondline = document.getElementById("dtext");
var l1h = parseInt(getComputedStyle(firstline)["height"]);
var l2h = parseInt(getComputedStyle(secondline)["height"]);
var d1h = parseInt(getComputedStyle(document.getElementById("design"))["height"]);
var d2h = parseInt(getComputedStyle(document.getElementById("design2"))["height"]);
var totalh = l1h + l2h + d1h+ d2h;
document.getElementById("desdiv").style.top = (212-totalh)/2 + "px";
firstline.style.top = (212-totalh)/2 + d1h +"px";
secondline.style.top = (212-totalh)/2 + l1h + d1h + "px";
document.getElementById("desdiv2").style.top = (212-totalh)/2 + l1h + l2h + d1h+ "px";}
ntext、dtext、desdiv和desdiv2是div。第一个2基于它们中文本的大小而改变,第二个2基于其中图像的大小而变化(ids design&design 2)
当只有文本div发生变化时,此函数非常有效。我在更改图像div时遇到了问题。在第二次调用函数之前,函数的第一部分(涉及getComputedStyle)似乎不会获得图像的新高度值。在它被称为第二次之后,一切都像它应该的那样集中。但理想情况下,第一次通话时一切都应该正常。我在这里做错了什么?我如何才能让div集中在第一个呼叫上?
编辑:我不确定这是否相关,但autoCenter()总是从另一个函数中调用。
这很可能是因为在调用center函数时图像没有完全加载。
向图像添加一个事件侦听器,以便在加载图像时激发中心函数。
至于分号。总是把它们放进去。查找分号插入。
相关文章:
- 防止双击执行两次jQuery post请求
- 单击元素两次后执行操作
- 为什么这个函数执行了两次
- 使用node.js模块,在什么情况下模块会被执行两次
- 必须点击两次按钮才能执行功能
- 是否可以执行两次匿名函数
- onKeyUp 导致代码执行两次
- 选中复选框后函数执行两次
- ng 类指令调用执行两次
- 提交按钮有时会以 html 形式执行两次操作
- 必须单击按钮两次才能执行功能 - jQuery
- AngularJs 基本应用程序执行两次
- jQuery AJAX POST 执行两次
- 防止脚本在执行时运行两次
- jquery ready 函数在我单击锚标记时执行两次
- document.getElementById 导致 jquery 文档准备执行两次
- CasperJS thenOpen() 执行两次
- 脚本执行两次,但时间戳相同
- 在 IE 上,表达式执行两次
- 在angularjs中两次执行控制器的routeparams中的特殊字符