Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript从隐藏图像获取宽度_Javascript_Css - Fatal编程技术网

使用JavaScript从隐藏图像获取宽度

使用JavaScript从隐藏图像获取宽度,javascript,css,Javascript,Css,我在HTML中有一个我隐藏的图像(id=“stone”)。从这张图片中,我稍后使用cloneNode在JS中复制了几个副本(id=“stone\u xxx),将它们放在DOM中并删除隐藏的类。一切正常。我最初需要在程序开始时(在制作第一个副本之前)获得宽度,因此我从隐藏图像(id=“stone”)中获取宽度。但我总是得到自然高度(90px),而不是实际高度(45px)。 我甚至在控制台中尝试排除CSS可能在JS之后执行,但这并没有改变任何东西,所以我不得不像中一样使用window.onload。

我在HTML中有一个我隐藏的图像(id=“stone”)。从这张图片中,我稍后使用cloneNode在JS中复制了几个副本(id=“stone\u xxx),将它们放在DOM中并删除隐藏的类。一切正常。我最初需要在程序开始时(在制作第一个副本之前)获得宽度,因此我从隐藏图像(id=“stone”)中获取宽度。但我总是得到自然高度(90px),而不是实际高度(45px)。
我甚至在控制台中尝试排除CSS可能在JS之后执行,但这并没有改变任何东西,所以我不得不像中一样使用window.onload。

let stone=document.getElementById(“stone”);
让newStone=stone.cloneNode(假);
newStone.classList.remove('hidden');
设i=1;
newStone.id=“石头”+i;
设el=document.getElementById('position_'+i);
el.预编(新闻石);
console.log(stone.naturalWidth);//=>272
console.log(石头宽度);//=>272应该是:45
.hidden{display:none;}
.stone{宽度:45px;}

我解决了这个问题:浏览器不会计算石头的新尺寸,因为没有显示,所以不会重新计算宽度值。如果我删除隐藏的类,一切都可以。 所以我有两种可能性:
•在不隐藏类的情况下启动,然后进行设置。
•获取其中一块石头的宽度\u xxx:

let newStone = document.getElementById( "stone_xxx" );
let width = newStone.width;
console.log(width);   // => 45
试试这个:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <img id="image" src="http://www.fillmurray.com/200/200" alt="image" />

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script>
      const width = $('#image').width();

      console.log(width); // 200
    </script>
  </body>
</html>

文件
常量宽度=$(“#图像”).width();
console.log(宽度);//200

这不是我想要的。我要求从隐藏的图像中获取宽度,并通过类中的css规则更改大小。您只需从一个未更改的图像中传递宽度,这是一种简单的方法。
顺便说一句,如果我将代码放入JSFIDLE,结果是200,但如果我将其放入本地HTML文件,结果是0。