2011-01-24 25 views
181

Làm cách nào để tìm chiều rộng hiện tại của <div> theo cách tương thích trên nhiều trình duyệt mà không cần sử dụng thư viện như jQuery?Cách tìm chiều rộng của div bằng JavaScript thô?

+71

1 cho "no jQuery" comment :) – Zlatko

+1

trùng lặp có thể xảy ra của [Understanding offsetWidth , clientWidth, scrollWidth và -Height, tương ứng] (http://stackoverflow.com/questions/21064101/understanding-offsetwidth-clientwidth-scrollwidth-and-height-respectively) (mà, quả thực, đã được hỏi nhiều sau, nhưng vẫn có ** câu trả lời phức tạp hơn **). – Keelan

Trả lời

267
document.getElementById("mydiv").offsetWidth 
+8

Điều đó, hoặc 'cientWidth', tôi không biết sự khác biệt thực sự. – JCOC611

+96

'offsetWidth' bao gồm chiều rộng đường viền,' clientWidth' không. – lincolnk

+0

Khi myDiv không có quy tắc CSS nhưng có "chiều rộng" và "chiều cao" được xác định trong thẻ, offsetWidth trả về chiều rộng gốc. Không phải là một vấn đề tôi chỉ cần thêm các quy tắc CSS và nó làm việc tốt. – rob

1

Bạn cũng có thể tìm kiếm trên DOM sử dụng ClassName. Ví dụ:

document.getElementsByClassName("myDiv") 

Điều này sẽ trả về một mảng. Nếu có một tài sản đặc biệt mà bạn đang quan tâm Ví dụ:.

var divWidth = document.getElementsByClassName("myDiv")[0].clientWidth; 

divWidth bây giờ sẽ bằng với chiều rộng của phần tử đầu tiên trong mảng div của bạn.

21

Bạn có thể sử dụng clientWidth hoặc offsetWidthMozilla developer network reference

Nó sẽ như thế nào:

document.getElementById("yourDiv").clientWidth; // returns number, like 728 

hoặc với biên giới width:

document.getElementById("yourDiv").offsetWidth; // 728 + borders width 
0

cuộc gọi dưới phương pháp trên thẻ div hoặc cơ onclick =" show (sự kiện); " chương trình chức năng (sự kiện) {

 var x = event.clientX; 
     var y = event.clientY; 

     var ele = document.getElementById("tt"); 
     var width = ele.offsetWidth; 
     var height = ele.offsetHeight; 
     var half=(width/2); 
     if(x>half) 
     { 
      // alert('right click'); 
      gallery.next(); 
     } 
     else 
     { 
      // alert('left click'); 
      gallery.prev(); 
     } 


    } 
5

Tất cả câu trả lời là đúng, nhưng tôi vẫn muốn cung cấp một số lựa chọn thay thế khác có thể hoạt động.

Nếu bạn đang tìm chiều rộng được chỉ định (bỏ qua phần đệm, lề, v.v.), bạn có thể sử dụng.

getComputedStyle(element).width; //returns value in px like "727.7px" 

getComputedStyle cho phép bạn truy cập tất cả các kiểu của các yếu tố đó. Ví dụ: padding, paddingLeft, margin, border-top-left-radius và vân vân.

+0

Điều này sẽ không hoạt động trong IE 6-8. –

1

Thực ra, bạn không phải sử dụng document.getElementById("mydiv").
Bạn chỉ có thể sử dụng id của div, như:

var w = mydiv.clientWidth;
hoặc
var w = mydiv.offsetWidth;
, vv

Các vấn đề liên quan