Javascript 如何将select的所有选项标签替换为其值?
如果select元素的值与其标签不同,如何用相应的Javascript 如何将select的所有选项标签替换为其值?,javascript,html,Javascript,Html,如果select元素的值与其标签不同,如何用相应的值替换所有标签 其次,我如何在不使用任何框架的情况下按字母顺序对列表进行排序 输入: <select name="options" > <option value="apple">Fruit</option> <option value="rye">Bread</option> <option value="beer">Beverage</opt
值替换所有标签
其次,我如何在不使用任何框架的情况下按字母顺序对列表进行排序
输入:
<select name="options" >
<option value="apple">Fruit</option>
<option value="rye">Bread</option>
<option value="beer">Beverage</option>
</select>
果
面包
饮料
输出:
<select name="options" >
<option value="apple">apple</option>
<option value="beer">beer</option>
<option value="rye">rye</option>
</select>
苹果
啤酒
黑麦
当然可以,使用getElementsByTagName()
和innerHTML
:
var allOptions = document.getElementsByTagName("option");
for (var i=0; i<allOptions.length; i++) {
allOptions[i].innerHTML = allOptions[i].value;
}
var allOptions=document.getElementsByTagName(“选项”);
对于(var i=0;i
要按字母顺序对选项进行排序,请参阅:如果您希望它们相同,只需省略值属性即可-然后选项
标记内的字符串将作为值发送到服务器。查看此处:。您可以执行以下操作:
<select name="options" >
<option value="apple">Fruit</option>
<option value="rye">Bread</option>
<option value="beer">Beverage</option>
</select>
<script>
var options = document.getElementsByName("options")[0].querySelectorAll("option");
Array.prototype.slice.call(options).map(function (option) {
option.innerHTML = option.value;
});
</script>
果
面包
饮料
var options=document.getElementsByName(“选项”)[0].querySelectorAll(“选项”);
Array.prototype.slice.call(选项).map(函数(选项){
option.innerHTML=option.value;
});
您可以将其封装在一个函数中,以便对select进行排序,并在删除或添加select中的任何元素时进行排序
函数应该是这样的:
function sortSelect(selElem) {
var tmpAry = new Array();
for (var i=0;i<selElem.options.length;i++) {
tmpAry[i] = new Array();
tmpAry[i][0] = selElem.options[i].text;
tmpAry[i][1] = selElem.options[i].value;
}
tmpAry.sort();
while (selElem.options.length > 0) {
selElem.options[0] = null;
}
for (var i=0;i<tmpAry.length;i++) {
var op = new Option(tmpAry[i][0], tmpAry[i][1]);
selElem.options[i] = op;
}
return;
}
谢谢!太简洁了!我怎样才能按字母顺序对列表中的值进行排序?@SteveBrown很抱歉,我错过了排序部分。请参阅链接问题以获得排序的解决方案。虽然这里不使用jQuery,但我听说如果不在选项标记中指定值,jQuery有时会出现问题。指定值也不是最佳做法吗es使用value属性?即使您使用DTD Strict,value
属性也是可选的,因此我假设省略该属性是标准做法。关于jQuery,我没有遇到任何类似的问题。但是如果您指的是中描述的错误,那么它似乎只影响了IE,而且似乎是从jQuery 1.4.4开始修复。也影响chrome。“你不能依赖jQuery使用文本内容来代替value属性。它可以用于过滤器,但不一定用于DOM选择。在chrome中,这将显示1而不是2个匹配的元素”我认为这是正确的行为,因为您的选择器过滤器基于属性名-值对,而第二个下拉列表缺少它。Firefox 9和IE 9的行为方式相同。如果我也用CSS编写它,我希望该选择器也会这样做。querySelectorAll
在标准JS中不可用我知道。你应该有option.innerHTML=option.value
,而不是相反。最后,这不会按字母顺序排序。我会给你-1表示发布不起作用且无法解决问题的代码。如果你回来修复它,我会给+1。另外,当我看到其他人发布时,我正要进行排序一个指向另一个已回答问题的链接。您想让我一起删除我的答案吗?嗯,什么是querySelectorAll
?在哪个浏览器中工作?
sortSelect(document.getElementsByName("options"));