在javascript中获取DIV宽度和高度

use*_*601 10 html javascript size ajax jquery

我正在尝试获取div宽度和高度,因为用户更改它并将该数字提交到另一个页面.我似乎无法弄清楚如何获得宽度和高度.

<script>
$(function() {
  $( "#set div" ).draggable({ 
    stack: "#set div",
    preventCollision: true,
    containment: $('#main_content'),
      stop: function(event, ui) {
          var mydiv = document.getElementById("set");
          var pos_x = ui.offset.left;
          var pos_y = ui.offset.top;

          var width = mydiv.style.width;        ----THIS DOESN'T WORK
          var height = mydiv.style.height;      ----THIS DOESN'T WORK

          var window_width = window.innerWidth;
          var window_height = window.innerHeight;
          var need = ui.helper.data("need");

          console.log(pos_x);
          console.log(pos_y);
          console.log(width);
          console.log(window_width);
          console.log(need);

          //Do the ajax call to the server
          $.ajax({
              type: "POST",
              url: "updatecoords.php",
              data: { x: pos_x, y: pos_y, need_id: need, width: width, height: height, window_width: window_width, window_height: window_height}
            }).done(function( msg ) {
              alert( "Data Saved: " + msg );
            });  
      }
  });
});
</script>
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

小智 18

用它ele.style.width来获得元素的宽度是错误的!!!!!!

在本机JavaScript中,您可以通过两种方式获取元素的CSS:

标准方法

window.getComputedStyle(ele)
Run Code Online (Sandbox Code Playgroud)

例如,

var ele = document.getElementById("content"), // Do not use #
    eleStyle = window.getComputedStyle(ele);
/* Below is the width of ele */
var eleWidth = eleStyle.width;
Run Code Online (Sandbox Code Playgroud)

IE(IE 8及之前版)

element.currentStyle
Run Code Online (Sandbox Code Playgroud)

例如,

var ele = document.getElementById("content"), // Do not use #
    eleStyle = ele.currentStyle;
/* Below is the width of ele */
var eleWidth = eleStyle.width;
Run Code Online (Sandbox Code Playgroud)

为什么不用ele.style

ele.style只是得到了归属的风格ele.如果你使用ele.style.width,你只需要宽度ele.style,而不是真正的宽度ele.

如果你做了类似的事情:

ele.style.width = "55px"
Run Code Online (Sandbox Code Playgroud)

使用时会得到"55px" ele.style.width.如果还没有,你会得到不确定的.

如何在jQuery中做?

使用$ele.width()(如果你想要"精确"宽度,使用$ele.outWidth()),jQuery已经为你做了一切.


Yur*_*ter 12

在普通的JavaScript中使用

var width = mydiv.offsetWidth;
var height = mydiv.offsetHeight;
Run Code Online (Sandbox Code Playgroud)

这将为您提供数值,或

var width = mydiv.offsetWidth + 'px';
var height = mydiv.offsetHeight + 'px';
Run Code Online (Sandbox Code Playgroud)

如果你想要它们的"CSS"格式.


Str*_*lle 6

既然你已经在使用jQuery了,你可以这样做:

var width;

if (need == 1) {
   width = $("#web").width();
} else {
   width = $("#set").width();
}
Run Code Online (Sandbox Code Playgroud)