javascript 使用 appendChild 出现具有特定 ID 的事物

javascript appear a thing with specific id using appendChild

我不知道怎么解释,我不希望它不清楚,所以首先,我想展示这个 HTML 代码:

<body>
  <form class="" action="index.html" method="post">
    <input type="num" onkeyup="addOptions()" name="member" id="member">
    <div id="selects">

    </div>
  </form>
</body>

这是 javascript 代码:

<script type="text/javascript">

function addOptions() {
  document.getElementById('selects').innerHTML = "";
  var inputValue = document.getElementById('member').value;
  for (var i = 0; i < inputValue; i++) {
    var select = document.createElement('select');
    var option = document.createElement('option');
    option.innerText = "Example";

    select.appendChild(option);
    document.getElementById('selects').appendChild(select);
  }
}
</script>

因此,如果我在输入 num 中键入 num,则此代码的最佳状态是,select 将出现与我键入 num 一样多的次数。但是,它只会 运行 select 选项。所以,我的问题是我可以看到该选项在 HTML 代码中吗?因此,当我在文本字段中键入数字时,我会出现类似这样的内容,例如:

<option value="example" id="example">example</option>

所以选项代码将 运行 与 num 一样多,比如当我在文本字段中键入 3 时,我将得到 3 个代码,如上所示。

如果我没看错,你的代码中有一些问题。我相信您正在尝试使用 select 实现下拉。

for 循环中,您在每次迭代中创建 select,我认为您不希望这样做。要使 valueid 对新创建的 option 可用,您必须将这些属性设置为 option.

尝试以下操作:

function addOptions() {
  document.getElementById('selects').innerHTML = "";
  var select = document.createElement('select');
  var inputValue = Number(document.getElementById('member').value);
  for (var i = 0; i < inputValue; i++) {
    var option = document.createElement('option');
    option.innerText = "Example" + i;
    option.value = "example" + i;
    option.id = "example" + i;
    select.append(option);
  }
  if(select.innerHTML) // if at least one option then append select
    document.getElementById('selects').appendChild(select);
}
<input type="num" oninput="addOptions()" name="member" id="member"><br><br>
<div id="selects">

</div>

只需将一些行移出您的 for 循环,如下所示:

function addOptions() {
  document.getElementById('selects').innerHTML = "";
  var inputValue = document.getElementById('member').value;
  var select = document.createElement('select');
  for (var i = 0; i < inputValue; i++) {
    var option = document.createElement('option');
    option.innerText = "Example "+i;
    select.appendChild(option);
  }
  document.getElementById('selects').appendChild(select);
}
<form class="" action="index.html" method="post">
  <input type="num" onkeyup="addOptions()" name="member" id="member">
  <div id="selects">

  </div>
</form>