获取子元素纯 javascript 的宽度

Getting the width of child element pure javascript

本文关键字:javascript 元素 获取      更新时间:2023-09-26

Html:

<div class="project-box">
 <img src="img/ifix.jpg" class="thumbnail img-responsive">
   <div class="hover-box">
     <h2>TITLE</h2>
     <p>Description of title</p>
   </div>
 </div>

javascipt:

window.onload = function(){
var project = document.getElementsByClassName('project-box');
img = project.getElementsByTagName('img');
  alert(img.clientWidth); 
};

我正在尝试使用纯JavaScript获取img宽度并最终获得img高度,我知道使用jQuery要容易得多,但我想仅使用JavaScript来做到这一点。编辑:我意识到我没有为 img 和项目指定数组

工作 JS:

window.onload = function(){
var project = document.getElementsByClassName('project-box');
img = project[0].getElementsByTagName('img');
 alert(img[0].offsetWidth);
};

getElementsByClassNamegetElementsByTagName 都返回一个对象数组,因此您需要通过其索引访问实际元素,然后调用其方法/属性

window.onload = function () {
    var project = document.getElementsByClassName('project-box')[0];
    var img = project.getElementsByTagName('img')[0];
    alert(img.clientWidth);
};

演示:小提琴

我相信project.getElementsByTagName('img');正在返回一个数组,即使它只有一个对象。

尝试类似的东西

window.onload = function(){
var project = document.getElementsByClassName('project-box');
img = project.getElementsByTagName('img');
  alert(img.pop().width); //This should remove the element from the array and then call width
};

试试这个:

alert(img.clientWidth);

这不起作用的原因是 .getElementsByClassName() 和 .getElementsByTagName() 都将元素包装在 [object HTMLContainer] 中,您需要从每个对象中选择第一个元素。

此代码应该有效:

window.onload = function()
{
    var project = document.getElementsByClassName('project-box');
            img = project[0].getElementsByTagName('img');
    console.log(img[0].clientWidth);
};