想了解一下这段屏蔽下拉菜单多个选项的代码还能在简化一些吗?

2022-11-11 14:03:20 +08:00
 SkyRing
<script type="text/javascript"> var op = document.getElementById("wpas_ticket_type"); for (var i = 0; i < op.length; i++) { if (op[i].value.toLowerCase() == "4338") { op[i].disabled = true; } } var op = document.getElementById("wpas_ticket_type"); for (var i = 0; i < op.length; i++) { if (op[i].value.toLowerCase() == "4657") { op[i].disabled = true; } } </script>
1585 次点击
所在节点    JavaScript
8 条回复
westoy
2022-11-11 14:10:44 +08:00
[ ...document.querySelectorAll('#wpas_ticket_type') ].forEach(e=>e.disabeld = ["4338", "4657"].includes(e.value.toLowerCase()) || e.disabled)

不过 getElementById 会产生数组?
ragnaroks
2022-11-11 14:53:38 +08:00
楼上是正解,select 的 children ( option 元素数组)不能被直接替换,不然可以用 filter 一句话实现。
SkyRing
2022-11-11 15:15:31 +08:00
@westoy 表示还是用不来诶,只会换换数字的程度...
Leegod
2022-11-11 16:48:47 +08:00
@SkyRing 得多看 w3school 或者 MDN 之类的。一楼代码用到的知识点有:Array.forEach();箭头函数; Array.includes();逻辑运算符接函数
Leegod
2022-11-11 16:55:19 +08:00
@Leegod emmm...第四点叫“条件运算符的使用”比较适合
SkyRing
2022-11-12 07:33:55 +08:00
https://jsfiddle.net/ban5cv2f/#&togetherjs=0q1QI9ssV7
现在又遇到新问题了,不知道怎么判断查到了 id 可以打开,没查到就关闭选项这样子的,之前那个缩短的问题都还没搞定,害~
SkyRing
2022-11-12 07:38:15 +08:00
innerHTML 似乎能用这个的话就简单多了,但是 WordPress 又用不了,其他的语音改起来难度更高了,完全懵逼了~
SkyRing
2022-11-12 10:29:53 +08:00
总算是搞明白了,还是谢谢大家了,虽然上面的知识点似乎还是没搞懂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/894467

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX