从 ID HTML 获取值并保存在数组中

Get values from ID HTML and save in array

我正在做一个视图,一旦我点击我就会显示

For 循环

我有一个捕获二维码并将其显示在屏幕上的视图,我接下来要做的是通过使用 for 循环迭代元素来获取这些值并将其保存在数组中,在这种情况下我的 ID 是 id="scanned-result",我想迭代每个包含值并保存到数组。

我正在这样做,但由于某种原因它没有正确执行操作。我想知道我应该纠正什么?

      function SubmitCodes() {
             var QRCodeval= document.querySelectorAll('scanned-result');
             var arr = [];
             for (var i in QRCodeval) {
                 alert(QRCodeval[i]);
                 arr.push( QRCodeval[i]);
             }
             alert(arr.val);
         }

查看

    <div class="container">
        <div class="row">
            <div class="col-md-12" style="text-align: center;margin-bottom: 20px;">
                <div id="reader" style="display: inline-block;"></div>
                <div class="empty"></div>
    
                <div id="scanned-result">
                   <div>[1] - https://www.investopedia.com/terms/q/quick-response-qr-code.asp</div>
                   <div>[2] - https://www.dropbox.com/s/705b6p4a2ydvayx/EN-Poster.pdf?dl=0</div></div>
            </div>
    
        </div>
    </div>

由于您的页面上没有 <scanned-result></scanned-result> 元素,正如 charlietfl 指出的那样,您不会得到任何结果。

由于您的 HTML 标记如下:

<div id="scanned-result">
    <!-- … -->
</div>

您正在查找 ID。

并且 CSS 选择器中的有效 ID 查询是 #,因此您应该这样查询:

var QRCodeval = document.querySelectorAll('#scanned-result')

我已经更改迭代以使用 ID scanned-result 内的行填充数组。这会有帮助吗?

function SubmitCodes() {
        var QRCodeval = document.getElementById('scanned-result').children;
        var arr = [];

        for (var i = 0; i < QRCodeval.length; i++) {
            arr.push(QRCodeval[i].innerText)
        }

        console.log(arr)
    }
<div class="container">
    <div class="row">
        <div class="col-md-12" style="text-align: center;margin-bottom: 20px;">
            <div id="reader" style="display: inline-block;"></div>
            <div class="empty"></div>

            <div id="scanned-result">
                <div>[1] - https://www.investopedia.com/terms/q/quick-response-qr-code.asp</div>
                <div>[2] - https://www.dropbox.com/s/705b6p4a2ydvayx/EN-Poster.pdf?dl=0</div>
            </div>
        </div>

    </div>
</div>

您的代码存在几个问题。要使用 querySelector 按 ID select 元素,您需要使用 # select 或者,对于 select 内部的 div,您可以使用 element > element select或.

var QRCodeval = document.querySelectorAll("#scanned-result>div");

querySelectorAll returns 一个节点列表。所以你需要遍历它来获取单个元素的值。但是你 should not 使用 for..in。您可以改用 forEach

function submitCodes() {
  var QRCodeval = document.querySelectorAll("#scanned-result>div");
  var arr = [];
  QRCodeval.forEach((el) => arr.push(el.innerHTML));
  console.log(arr)
}

submitCodes();
<div class="container">
  <div class="row">
    <div class="col-md-12" style="text-align: center;margin-bottom: 20px;">
      <div id="reader" style="display: inline-block;"></div>
      <div class="empty"></div>

      <div id="scanned-result">
        <div>[1] - https://www.investopedia.com/terms/q/quick-response-qr-code.asp</div>
        <div>[2] - https://www.dropbox.com/s/705b6p4a2ydvayx/EN-Poster.pdf?dl=0</div>
      </div>
    </div>

  </div>
</div>

要获取元素内的文本,您可以使用 innerHTML