Javascript 将所有选项标记设置为";残疾人士;当它们与数组值匹配时(jQuery)
我遇到了一个问题,我必须使用两个for循环(至少这是我的方法)来比较数据和数组。我会尽量简短: 我有一个数组Javascript 将所有选项标记设置为";残疾人士;当它们与数组值匹配时(jQuery),javascript,jquery,arrays,Javascript,Jquery,Arrays,我遇到了一个问题,我必须使用两个for循环(至少这是我的方法)来比较数据和数组。我会尽量简短: 我有一个数组var excludeTimes=[“00:00”、“00:45”、“02:30”、“14:15”]等等。 一个元素和一些元素 <select id="Times"> <option value="--:--">--:--</option> <option value="00:00">00:00</opt
var excludeTimes=[“00:00”、“00:45”、“02:30”、“14:15”]等等。
一个
元素和一些
元素
<select id="Times">
<option value="--:--">--:--</option>
<option value="00:00">00:00</option>
<option value="00:15">00:15</option>
<option value="00:30">00:30</option>
<option value="00:45">00:45</option>
etc.
</select>
我认为你走的路线有点复杂。循环遍历选项,将它们映射到它们的值,然后将它们与数组进行比较,然后假设需要按值重新查找选项,然后禁用它们 最后一步是你缺少的部分,但我宁愿提出一个替代方案,而不是完成这条路线。您已经在对
.map()
进行选项循环-为什么不直接比较该循环中的值呢
以下循环遍历#Times
中的每个
,并根据excludeTimes
数组中存在的选项值设置其disabled
属性
const excludeTimes=[“00:00”、“00:45”、“02:30”、“14:15”];
$(“#Times>option”).attr(“disabled”,函数(){//
return excludeTimes.includes($(this).val());//禁用excludeTimes中的if值
});代码>
--:--
00:00
00:15
00:30
00:45
我认为你走的路线有点复杂。循环遍历选项,将它们映射到它们的值,然后将它们与数组进行比较,然后假设需要按值重新查找选项,然后禁用它们
最后一步是你缺少的部分,但我宁愿提出一个替代方案,而不是完成这条路线。您已经在对.map()
进行选项循环-为什么不直接比较该循环中的值呢
以下循环遍历#Times
中的每个
,并根据excludeTimes
数组中存在的选项值设置其disabled
属性
const excludeTimes=[“00:00”、“00:45”、“02:30”、“14:15”];
$(“#Times>option”).attr(“disabled”,函数(){//
return excludeTimes.includes($(this).val());//禁用excludeTimes中的if值
});代码>
--:--
00:00
00:15
00:30
00:45
您需要在代码中添加一行,如下所示
$(“#Times option[value=“”+ee[j]+“]”)attr('disabled','disabled')
$(文档).ready(函数(){
notSelectableTimes();
});
函数notSelectableTimes(){
const excludeTimes=[“00:00”、“00:45”、“02:30”、“14:15”]
const e=$(“#Times>option”).map(函数(){return$(this.val()}).get();
常数ee=e.slice(1);
对于(i=0;i
您需要在代码中添加一行,如下所示
$(“#Times option[value=“”+ee[j]+“]”)attr('disabled','disabled')
$(文档).ready(函数(){
notSelectableTimes();
});
函数notSelectableTimes(){
const excludeTimes=[“00:00”、“00:45”、“02:30”、“14:15”]
const e=$(“#Times>option”).map(函数(){return$(this.val()}).get();
常数ee=e.slice(1);
对于(i=0;i
我看不到您在哪里设置禁用的attr()
I属性?我看不到您在哪里设置禁用的attr()
I属性?我知道我的代码效率很低,而且很臃肿。但你的是如此干净,简短和容易理解。谢谢!我知道我的代码非常低效和臃肿。但你的是如此干净,简短和容易理解。谢谢!谢谢这也行得通。它适合我自己的代码,这很酷。但我会从上面的Typer中得到答案。@DamirLucic如果上面的问题/疑问能满足您的要求,请您将此标记为答案并竖起大拇指好吗?所以我可以得到分数:)谢谢!这也行得通。它适合我自己的代码,这很酷。但我会从上面的Typer中得到答案。@DamirLucic如果上面的问题/疑问能满足您的要求,请您将此标记为答案并竖起大拇指好吗?所以我可以得到分数:)
function notSelectableTimes() {
const excludeTimes = ["00:00", "00:45", "02:30", "14:15"]
const e = $("#Times>option").map(function() { return $(this).val() }).get();
const ee = e.slice(1);
for(i = 0; i < excludeTimes.length; i++) {
const find = $.inArray( excludeTimes[i], ee);
for(j = 0; j < ee.length; j++) {
if( ee[j] === excludeTimes[i]) {
console.log(`No bookings at ${ee[j]}!`);
console.log(ee[j]);
console.log(find);
}
}
}
}
notSelectableTimes();
<script>
$(document).ready(function(){
notSelectableTimes();
});
function notSelectableTimes() {
const excludeTimes = ["00:00", "00:45", "02:30", "14:15"]
const e = $("#Times>option").map(function() { return $(this).val() }).get();
const ee = e.slice(1);
for(i = 0; i < excludeTimes.length; i++) {
const find = $.inArray( excludeTimes[i], ee);
for(j = 0; j < ee.length; j++) {
if( ee[j] === excludeTimes[i]) {
$('#Times option[value="'+ee[j]+'"]').attr('disabled','disabled');
console.log(`No bookings at ${ee[j]}!`);
console.log(ee[j]);
console.log(find);
}
}
}
}
</script>