javascript - 如何创建一个动态下拉选择元素,其选项计数根据某个 div 的子元素数量而变化?

标签 javascript jquery css html

我有一个特定 id 的 div(比如 #pageContent),其子元素的数量将发生变化。我有一个选择下拉列表(例如 pageSelection),其选项计数应与 #pageContent 的子项数相匹配。 如果 #pageContent 子计数为 10,则 pageSelection 中的选项数也应为 10...

下拉列表的最后三个选项保持不变,但值必须相应更改。最初,最后三个选项的值为 2、3 和 4。
如果再向 #pageContent 添加两个子元素,那么最后三个选项的值现在应该变为 4、5 和 6。
如果在 #pageContent 中再添加 3 个子元素,那么最后三个选项的值应该变成 5, 6 & 7 等等......

这是我的代码:

function prependOptions() {
  var count = document.getElementById("pageContent").childElementCount;
  for (i = 0; i < count - 3; i++) {
    var index = i + 1;
    document.getElementById("pageSelection").prepend("<option value=\'" + index + "\'>" + index + "</option>");
  }
}

$(function() {
  $("#pageSelection").change(function() {
    var selectedText = $(this).find("option:selected").text();
    var selectedValue = $(this).val();
    alert("Selected Text: " + selectedText + " Value: " + selectedValue);
  });
});

function addElement(parentId, elementTag, html) {
  var p = document.getElementById(parentId);
  var newElement = document.createElement(elementTag);
  newElement.innerHTML = html;
  p.prepend(newElement);
}
<input type="button" onclick="addElement('pageContent', 'div','Added Fruit');" value="Add an Item" />

<div id="pageContent">
  <div class="pageContentItem">Content01</div>
  <div class="pageContentItem">Content02</div>
  <div class="pageContentItem">Apple</div>
  <div class="pageContentItem">Mango</div>
  <div class="pageContentItem">Orange</div>
</div>

<select name="contentSelector" id="pageSelection">
  <option value="8">Apple</option>
  <option value="9">Mango</option>
  <option value="10">Orange</option>
</select>

codepen可用于轻松追踪。

最佳答案

下面是对你有帮助的代码片段,

修改了 addElement 方法以实现相同。

function addElement(parentId, elementTag, html) {
  var p = document.getElementById(parentId);
  var newElement = document.createElement(elementTag);
  newElement.innerHTML = html;
  p.prepend(newElement);
  var elementValues = [];
  $("#pageContent").children().each(function () { 
    elementValues.push($(this).html()); 
  });
  $('#pageSelection').find('option').remove().end();
  $.each(elementValues, function( index, value ) {
    $('#pageSelection').append($('<option>', { value : index }).text(value));
  });
}

下面是更新后的代码 penURL:

https://codepen.io/redhatvicky/pen/jRPEXq?editors=1010

关于javascript - 如何创建一个动态下拉选择元素,其选项计数根据某个 div 的子元素数量而变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55467707/

相关文章:

asp.net - 在不直接使用 html 和 css 的情况下布局 ASP.NET web 应用程序

html - 如何解决 Bootstrap 中的嵌套列

javascript - jquery生成模态框

javascript - 当 JS 说不应该时显示 HTML

html - CSS 幻灯片在 Firefox 中不起作用

尽管在服务器端成功执行,Jquery AJAX 返回错误 500

javascript - 使用 jQuery 将输入 TITLE 显示为 VALUE(包括 jsfiddle)

javascript - 如何将自定义数据传递给我的 Mocha 测试?

javascript - AngularJS 指令到指令通信

Javascript/n 显示为字符串的一部分