簡體   English   中英

使用 JavaScript 從隱藏圖像中獲取寬度

[英]Getting width from hidden image with JavaScript

我的 HTML 中有一個我隱藏的圖像(id=“stone”)。 從這張圖片中,我稍后在 JS 中使用 cloneNode 制作了幾個副本(id=”stone_xxx),將它們放入 DOM 並刪除隱藏類。 一切正常。 我最初在程序啟動時需要寬度(在我制作第一個副本之前),所以我從隱藏圖像(id =“stone”)中獲取它。 但我總是得到 naturalHeight (90px) 而不是實際高度 (45px)。
我什至在控制台中嘗試排除可能在 JS 之后執行 CSS 但這並沒有改變任何東西,所以我不得不使用 window.onload 就像在獲取圖像寬度高度 ZDE9B9ED78D7E2E1DCEEFFEE780E2F919中一樣

 let stone = document.getElementById( "stone" ); let newStone = stone.cloneNode( false ); newStone.classList.remove( 'hidden' ); let i = 1; newStone.id = "stone_" + i; let el = document.getElementById( 'position_' + i); el.prepend(newStone); console.log(stone.naturalWidth); // => 272 console.log(stone.width); // => 272 Should be: 45
 .hidden { display: none;}.stone { width: 45px;}
 <img id="stone" class="stone hidden" src=https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png /> <div id="position_1"></div>

我解決了它:瀏覽器不計算石頭的新尺寸,因為沒有顯示,所以寬度的值不會重新計算。 如果我刪除隱藏的 class 一切正常。 所以我有兩種可能性:
• 開始時不隱藏 class 並在之后設置它。
• 獲取其中一個克隆stones_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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM