Tôi đã viết tập lệnh sau để hiển thị phần tử ẩn, sau đó sửa vị trí của nó thành tâm của trang.offsetHeight và offsetWidth tính sai trên sự kiện onclick đầu tiên, không phải thứ hai
function popUp(id,type) {
var popUpBox = document.getElementById(id);
popUpBox.style.position = "fixed";
popUpBox.style.display = "block";
popUpBox.style.zIndex = "6";
popUpBox.style.top = "50%";
popUpBox.style.left = "50%";
var height = popUpBox.offsetHeight;
var width = popUpBox.offsetWidth;
var marginTop = (height/2) * -1;
var marginLeft = (width/2) * -1;
popUpBox.style.marginTop = marginTop + "px";
popUpBox.style.marginLeft = marginLeft + "px";
}
Khi chức năng này được gọi bởi sự kiện onclick, offsetHeight và offsetWidth được tính không chính xác, do đó không căn giữa phần tử một cách chính xác. Nếu tôi nhấp vào yếu tố onclick lần thứ hai, offsetHeight và offsetWidth tính toán chính xác.
Tôi đã thử thay đổi thứ tự theo mọi cách tôi có thể tưởng tượng và điều này khiến tôi phát điên! Bất kỳ giúp đỡ được rất nhiều đánh giá cao!
Hmm, mã của bạn có vẻ hoạt động tốt cho tôi? http://jsfiddle.net/mrtsherman/SdTEf/1/ – mrtsherman
@mtrsherman, CẢM ƠN BẠN. Bạn đang jsfiddle cho tôi thấy lỗi của cách của tôi. Hãy lưu ý: nếu bạn không xác định chiều cao và chiều rộng cho phần tử bạn muốn xác định chiều cao và chiều rộng, bạn sẽ không nhận được chiều cao và chiều rộng chính xác bằng cách sử dụng offsetHeight và offsetWidth. – saoyr5
Yay. Vui vì bạn đã giải quyết nó. Vấn đề như thế này, nơi mọi thứ xuất hiện ổn, nhưng không phải - làm cho đầu tôi muốn nổ tung! – mrtsherman