javascript - 在选择选项列表 Javascript 中更改副本
问题描述
我有一个选择选项列表,我想将副本“Bestseller”从选项值的开头移动到值的结尾,以便用户更容易按字母顺序查看所有选项并查看最后是“畅销书”副本,因此列表如下所示:
- AAAA
- BBBB - 畅销书
- 中国交建
- 等等等等
document.querySelectorAll('.dropdown').forEach(function(select) {
Array.from(select.options).forEach(function(option) {
if (option.innerText.includes("Bestseller")) {
select.insertBefore(option, select.options[1]);
}
});
var selectOption = document.querySelector('.dropdown');
var copy = new Array();
for (i = 1; i < selectOption.length; i++) {
copy[i - 1] =
selectOption.options[i].text.toUpperCase() + "," +
selectOption.options[i].text + "," +
selectOption.options[i].value;
}
copy.sort();
for (i = 1; i < selectOption.length; i++) {
var parts = copy[i - 1].split(',');
selectOption.options[i].text = parts[1];
selectOption.options[i].value = parts[2];
}
});
<select class="dropdown">
<option disabled="" value="">Select option</option>
<option>GGGG</option>
<option>Bestseller - TTTT</option>
<option>KKKK</option>
<option>AAAA</option>
<option>Bestseller - PPPP</option>
<option>CCCC</option>
<option>Bestseller - BBBB </option>
<option>Bestseller - ZZZZ</option>
<option>EEEE</option>
<option>Bestseller - IIII</option>
</select>
解决方案
只是在-
性格上分道扬镳。如果输出数组有多个元素,则反转它们。如果没有,请使用原始字符串。
let comps = parts[1].split("-");
if(comps.length > 1)
selectOption.options[i].text = comps[1] + " - " + comps[0];
else
selectOption.options[i].text = parts[1];
仅供参考:您必须在执行此操作后对选项进行排序以获得您想要的字母顺序。
document.querySelectorAll('.dropdown').forEach(function(select) {
Array.from(select.options).forEach(function(option) {
if (option.innerText.includes("Bestseller")) {
select.insertBefore(option, select.options[1]);
}
});
var selectOption = document.querySelector('.dropdown');
var copy = new Array();
for (i = 1; i < selectOption.length; i++) {
copy[i - 1] =
selectOption.options[i].text.toUpperCase() + "," +
selectOption.options[i].text + "," +
selectOption.options[i].value;
}
copy.sort();
for (i = 1; i < selectOption.length; i++) {
var parts = copy[i - 1].split(',');
let comps = parts[1].split("-");
if(comps.length > 1)
selectOption.options[i].text = comps[1] + " - " + comps[0];
else
selectOption.options[i].text = parts[1];
selectOption.options[i].value = parts[2];
}
});
<select class="dropdown">
<option disabled="" value="">Select option</option>
<option>GGGG</option>
<option>Bestseller - TTTT</option>
<option>KKKK</option>
<option>AAAA</option>
<option>Bestseller - PPPP</option>
<option>CCCC</option>
<option>Bestseller - BBBB </option>
<option>Bestseller - ZZZZ</option>
<option>EEEE</option>
<option>Bestseller - IIII</option>
</select>
推荐阅读
- c# - 如何在 C# 中的 switch 表达式中创建一个空的默认情况?
- python - 在将日期插入表中时,我得到:重复的列名
- python - shutil.move() 创建重复项并在后续调用中失败
- python - 烧瓶两部分端点响应
- android - 用于 CI 集成的 Java/Kotlin 字节码检查器
- typescript - 如何将声明的外部值导出为命名导出?
- powershell - 是否可以与正在运行的服务建立关联并通过 powershell 进行处理?
- mongodb - Is it possible to convert the below collection to array as shown in MongoDB?
- flutter - 在 Android Studio 中运行 iOS 模拟器时,Dart/Flutter 代码检查不起作用
- python - 如何解决使用 PyCharm 运行 SHAP 测试用例的错误:用法:_jb_pytest_runner.py 错误?