从下拉列表中获取所有值,除了JavaScript中选中的值
Get all values from drop down except selected one in JavaScript
我有一些随机值的下拉菜单。当我选择的值onchange事件触发器,我想在它下面添加新的下拉,但新的一个应该有所有的值,除了选择一个在第一个下拉。现在当我改变第二个的值,我需要第三个只有非选择的值从前两个下拉列表。在javaScript中做到这一点最简单的方法是什么?
我现在所拥有的是添加新下拉菜单的机制,但现在我正在填充一些虚拟数据。我需要实现一个函数,我可以调用而不是dateGenerate()
我必须解决这个问题,而不使用jQuery:(
这是HTML:
Test:<br>
<select id="ddlTest" onchange="addNewTestDrop('newTest');">
<option value=""></option>
<option value="Raven">Raven</option>
<option value="PPA">PPA</option>
<option value="PPA+">PPA+</option>
<option value="Basic Knowledge">Basic Knowledge</option>
<option value="PCT">PCT</option>
</select>
<div id="newTest">
</div>
这是javaScript,我有:
function dateGenerate() {
var date = new Date(), dateArray = new Array(), i;
curYear = date.getFullYear();
for(i = 0; i<5; i++) {
dateArray[i] = curYear+i;
}
return dateArray;
}
function addNewTestDrop(divname) {
var newDiv=document.createElement('div');
var html = '<select>', dates = dateGenerate(), i;
for(i = 0; i < dates.length; i++) {
html += "<option value='"+dates[i]+"'>"+dates[i]+"</option>";
}
html += '</select>';
newDiv.innerHTML= html;
document.getElementById(divname).appendChild(newDiv);
}
获取所有选项,除了与select(因为它被选中)具有相同值的选项,克隆它们,并附加到新的select
document.getElementById('ddlTest').addEventListener('change', function() {
var newSelect = document.createElement('select');
var options = [].slice.call(this.querySelectorAll('option')).forEach(function(elem) {
if (this.value !== elem.value) newSelect.appendChild(elem.cloneNode(true))
}.bind(this));
document.getElementById('newTest').appendChild(newSelect);
}, false);
小提琴
您可以根据需要修改此代码。
$(document).ready(function() {
var selectWrapper = $('#select-boxes');
$(document).on('change', '.dynamic-select', function() {
var element = $(this);
var optionsLength = (element.find('option').length) - 1; // because we have an empty option
if(optionsLength === 1) {
return true;
}
var newSelect = $(this).clone();
newSelect.find("option[value='" + element.val() + "']").remove();
newSelect.appendTo(selectWrapper)
});
});
.dynamic-select{
display: block;
margin: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="select-boxes">
<select class="dynamic-select">
<option value=""></option>
<option value="Raven">Raven</option>
<option value="PPA">PPA</option>
<option value="PPA+">PPA+</option>
<option value="Basic Knowledge">Basic Knowledge</option>
<option value="PCT">PCT</option>
</select>
</div>
相关文章:
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- Javascript获取元素背景图像,但消除了“;url()”;
- Javascript对象被奇怪地删除了
- Javascript:除了使用event.prventDefault()之外,让Chrome for Android启动
- IE11是否删除了javascript条件编译
- JavaScript从我的小数中去除了.00
- 在这种javascript情况下,除了eval之外的任何其他选项
- 除了隐藏在多范式/函数式语言(如 JavaScript)中的信息之外,闭包的真正价值主张是什么?
- 编译到 javascript 是否排除了 dart 添加弱引用
- 除了通过JavaScript追加之外,还有其他方法可以将动态数据添加到jQuery移动页面中吗?
- 除了jQuery之外的哪个Javascript库使用$
- 除了添加调试器之外,是否有更好的方法来调试 MVC3 应用程序中的 javascript
- 如何使用纯javascript和css(无jquery)调暗整个屏幕,除了两个同心正方形之间的区域
- JavaScript 中的“定义”用途是什么(除了显而易见的)
- 在客户端JavaScript中,除了窗口之外的任何元素都可以获得调整大小事件
- 如何衡量JavaScript性能(除了页面加载时间)
- 除了与Javascript的链接
- 除了 JavaScript 之外,是否有任何其他语言在大括号开始位置(同一行和下一行)之间有区别
- 除了javascript中的语句
- 从下拉列表中获取所有值,除了JavaScript中选中的值