2011-01-10 3 views
8

đơn giản một dòng html:Tại sao trình duyệt trả về chuỗi trống trên style.height? Làm thế nào để có được chiều cao thực tế của một phần tử?

<div onclick="alert(this.style.height)">sometext</div>

và cảnh báo cho:

http://i55.tinypic.com/2rxdtgo.png

nhưng nó phải là như 10px hoặc sth như thế.

+0

phiên bản opera? ... –

+0

Bạn đã thử đặt kiểu này một cách rõ ràng chưa? '

sometext
' –

+0

sử dụng jquery! bạn sẽ có một thời gian đơn giản hơn nhiều, nó có hàm $ .height() để cho biết chiều cao. Ngoài ra bạn có thể thấy rằng không có chiều cao, do đó bạn phải kiểm tra lineHeight và padding (trên và dưới). – Jason

Trả lời

17

Khi bạn sử dụng this.style.height, chiều cao phải được xác định trên phần tử đầu tiên, như thế này:

<div style="height: 15px;" onclick="alert(this.style.height)">sometext</div> 

Nếu không, có lẽ bạn nên sử dụng offsetHeight hoặc clientHeight:

<div onclick="alert(this.offsetHeight)">sometext</div> 
+0

+1 nó hoạt động. Nhưng bằng cách nào? sự khác biệt giữa 'height' và' offsetHeight' là gì? – Kevin

+0

'Chiều cao' chỉ khả dụng nếu bạn đã đặt chiều cao một cách rõ ràng. Nhưng 'offsetHeight' sẽ luôn là chiều cao được tính toán. Nếu bạn không chắc chắn về thời điểm sử dụng thì một mẹo đơn giản là sử dụng 'offsetHeight' khi bạn kiểm tra chiều cao của nó và' height' khi bạn thiết lập chiều cao mới. – DanneManne

+0

wat về 'clientHeight'? là giống như 'offsetHeight'? – Kevin

4

Đoán của tôi là bạn không thực sự có bất kỳ quy tắc kiểu nào thiết lập chiều cao của phần tử. Để có chiều cao được hiển thị thực tế của một phần tử, hãy sử dụng element.clientHeight.

1

object.style.whatever chỉ trả về các giá trị đã được thiết lập bằng cách sử dụng thuộc tính style trong đánh dấu, hoặc tài sản theo phong cách trong kịch bản, như sau:

<div style="height:10px" onclick="alert(this.style.height)">sometext</div> 

hoặc

theDiv.style.height = "10px"; 

Phương thức getComputedStyle cho phép bạn truy cập các thuộc tính kiểu, vì chúng được xác định bởi tầng (tức là sử dụng @style như trên, hoặc <stylesheet>...</stylesheet> hoặc bất kỳ cơ chế nào)

CHỈNH SỬA: Có thể giúp bạn sử dụng thư viện JS trình duyệt được thiết lập trực tiếp, và phải đối phó với các quirks của các trình duyệt đa dạng. Các phiên bản cũ hơn của IE (ví dụ) không hỗ trợ phương thức này.