Получить ширину и высоту DIV в javascript
Я пытаюсь получить ширину и высоту 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>
Как правильно это сделать?
4 ответов
поскольку вы уже используете jQuery, вы можете просто сделать:
var width;
if (need == 1) {
width = $("#web").width();
} else {
width = $("#set").width();
}
это совершенно неправильно использовать ele.style.width
чтобы получить ширину элемента!!!!!!
в родном JavaScript вы можете получить CSS элемента двумя способами:
Стандартный Метод
window.getComputedStyle(ele)
например,
var ele = document.getElementById("content"), // Do not use #
eleStyle = window.getComputedStyle(ele);
/* Below is the width of ele */
var eleWidth = eleStyle.width;
т. е.(т. е. 8 и до)
element.currentStyle
например,
var ele = document.getElementById("content"), // Do not use #
eleStyle = ele.currentStyle;
/* Below is the width of ele */
var eleWidth = eleStyle.width;
Почему Бы Не Использовать ele.style
?
ele.style
это просто стиль attribule из ele
. Если вы используете ele.style.width
, вы просто получаете ширину ele.style
, не реальная ширина ele
.
если вы сделали что-то вроде:
ele.style.width = "55px"
вы получаете "55px" при использовании ele.style.width
. Если вы этого не сделали, вы получите неопределенность.
как сделать в jQuery?
использовать $ele.width()
(если вы хотите" точную " ширину, используйте $ele.outWidth()
), jQuery сделал все для вас.
в обычном ванильном JavaScript используйте
var width = mydiv.offsetWidth;
var height = mydiv.offsetHeight;
это даст вам числовые значения, или
var width = mydiv.offsetWidth + 'px';
var height = mydiv.offsetHeight + 'px';
Если вы хотите их в формате" CSS".
поскольку вы используете jQuery, вы, вероятно, захотите узнать о следующем:
$('#id').outerWidth() $('#id').outerWidth (true)
Это будет очень удобно. Это позволяет найти общую ширину поля div (заполнение, граница, ширина и (необязательный аргумент)).