【问题标题】:option of select element is empty选择元素的选项为空
【发布时间】:2020-08-07 17:09:23
【问题描述】:

我在 select2 元素中有一个产品列表。它显示如下:

    <select name="product" class="select2 form-control select2-hidden-accessible">
        <option value="138" data-select2-id="60">Option1</option>
        <option value="39" data-select2-id="78">Option2</option>
        // several more options here
     </select>

尽管这看起来是正确的,但当我迭代这样的选项时:

 for (let i = 0; i < select.options.length; i++) {
    console.log(select.options[i]);
}

我得到 1 且只有 1 个(即使有多个选项)记录一个空选项元素的条目,例如:

<option value="" selected="" data-select2-id="8">

有什么想法可能会出错吗?

Edit1:我在同一页面中有几个选择,它们都使用迭代选项的相同函数。这是我唯一遇到的问题。

【问题讨论】:

标签: javascript html jquery-select2


【解决方案1】:

您的代码中有语法错误:

在此语句select.options.length 中,select 不是有效的选择器或变量(根据您在问题中给出的代码)。它会给你一个 select is undefined 错误。

将你的 for 循环切换到这个:

var dropDown = document.querySelector('.select2');
for (let i = 0; i < dropDown.options.length; i++) {
    console.log(dropDown.options[i]);
}

这将显示两个选项。

【讨论】:

  • 嗨,select 是一个有效的元素。我将它作为参数发送给函数。如果我记录“选择”,那么我会看到正确呈现的选择元素。
  • 这是一个有效的元素,但它需要被包裹在 document.querySelectordocument.getElementsByTagName 或其他东西中。可以直接引用select。上面的代码不适合你吗?
  • 这是我唯一遇到问题的选择元素。其他选择我以相同的方式发送到函数,并且效果很好。
  • 这很奇怪。打印出你选择的长度,看看 for 循环是否迭代了 2 次。
  • @jaimish11 你应该要求 Stack Snippet,而不是 jsfiddle 或 codepen。我们希望尽可能将代码保留在这里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多