gpt4 book ai didi

javascript - 检查动态创建的数组中是否存在所选选项

转载 作者:行者123 更新时间:2023-12-02 20:01:36 26 4
gpt4 key购买 nike

我有一些看起来像这样的代码。 select#member_id 的值由 PHP 动态添加。我试图确定用户是否从列表中选择 rescom 选项,这将确定我是否动态添加第二个下拉列表。按照原样的代码,我始终收到脚本发出的 -1 警报。 console.log 调用打印出:[1, 3] [2]

<script>
var res_members = new Array();
var com_members = new Array();
</script>
<p><select name="member_id" id="member_id">
<option value=""></option>
<option value="1">Alice (res)</option><script>res_members.push(1);</script>
<option value="2">Bob (com)</option><script>com_members.push(2);</script>
<option value="3">Carl (res)</option><script>res_members.push(3);</script>
</select></p>
<script>
console.log(res_members, com_members);
$(function(){
$('#member_id').change(function(){
alert($.inArray($('#member_id').val(), res_members));
alert($.inArray($('#member_id').val(), com_members));
});
});
</script>

最佳答案

为什么不选择像这样更简单、更方便的东西:

<p><select name="member_id" id="member_id">
<option value=""></option>
<option class="res" value="1">Alice (res)</option>
<option class="com" value="2">Bob (com)</option>
<option class="res" value="3">Carl (res)</option>
</select></p>
<script>
$(function(){
$('#member_id').change(function(){
var isRes = $(this).find(':selected').hasClass('res');
alert(isRes ? "res" : "com");
});
});
</script>

<强> See it in action

更新:为什么您当前的代码不起作用

这是因为您在使用 $.inArray 搜索字符串时将整数插入数组(使用 push)。更改其中任何一个都会使现有代码正常工作。

因此一种解决方案是插入字符串:

<option value="1">Alice (res)</option><script>res_members.push("1");</script>
<option value="2">Bob (com)</option><script>com_members.push("2");</script>
<option value="3">Carl (res)</option><script>res_members.push("3");</script>

另一种方法是寻找整数:

alert($.inArray(parseInt($(this).val()), res_members));
alert($.inArray(parseInt($(this).val()), com_members));

显然$.inArray使用运算符===将干草堆元素与针进行比较。

关于javascript - 检查动态创建的数组中是否存在所选选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7905430/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com