【发布时间】:2017-04-11 15:06:59
【问题描述】:
我有一个在单击按钮时调用的函数。
该函数首先更改控件的大小,然后我有 2 行代码来获取控件的高度和宽度,并将它们作为文本显示在段落中。
当用户第一次点击按钮时,他们会得到错误的值 340*150,当他们再次点击按钮时,他们会得到正确的值 600*400
340*150 是控件展开前的旧/原始尺寸。
但是在第一次点击时,即使显示了错误的值,我仍然可以得到正确的控件大小 600*400 显示。
function a () {
//change control to 600*400
//now get the height and width and display in 'p' and 'g'.
document.getElementById('p').innerHTML = jQuery("#hi").width();
document.getElementById('g').innerHTML = jQuery("#hi").height();
}
<button id="btn" onClick="a()"> Maximize 600x400 </button
也可以使用 settimeout 函数解决问题。但我想正确地修复它。
【问题讨论】:
-
你能提供你目前拥有的html和javascript吗?或者至少是一个精简的可操作版本?
-
您好,感谢您的回复。我有js代码。我也更新了代码以包含 html。
-
能不能把设置"#hi"的宽高的代码放上去,如果用
jQuery("#hi").width(600)设置就可以了。 -
我认为这是因为浏览器需要一点时间来实际更改 DOM。然后你太快地检查宽度和高度。这就是 setTimeout 解决问题的原因。它使 DOM 更新等待几毫秒。我认为唯一的其他“正确”方法可能是在元素调整大小时设置某种事件侦听器。不过不确定这是否可能。
标签: javascript jquery html height width