Javascript 错误:语法错误,无法识别的表达式:#白名单"结束选项[value*=+;value+;]
我得到了一个语法错误,但主要是因为我自己不知道如何编写它 我试过了,但我真的被卡住了。虽然我觉得我很亲近 我的代码如下:Javascript 错误:语法错误,无法识别的表达式:#白名单"结束选项[value*=+;value+;],javascript,jquery,syntax-error,Javascript,Jquery,Syntax Error,我得到了一个语法错误,但主要是因为我自己不知道如何编写它 我试过了,但我真的被卡住了。虽然我觉得我很亲近 我的代码如下: function hourselect_link_field(source_select, target_select){ var source_value = $('#' + source_select + ' :selected').val(); var time = parseInt(source_value.replace(":", ""));
function hourselect_link_field(source_select, target_select){
var source_value = $('#' + source_select + ' :selected').val();
var time = parseInt(source_value.replace(":", ""));
var time_values = $("#" + target_select + " option").map(function () {
return this.value;
}).get();
$.each(time_values, function (index, value) {
var set_time = parseInt(value.replace(":", ""));
if (set_time <= time) {
$("#" + target_select + " option[value*= + value + ]").prop('disabled', true);
$("#" + target_select + " option[value*= + value + ]").addClass('disabled');
}
});
// console.log('time values = ' + time_values);
//alert(time);
}
更具体地说:
option[value*= + value + ]"
我似乎无法获得正确的语法
我希望如果值为“00:00”,则应将其设置为禁用。
但它不起作用
我得到这个语法错误
尝试时:
$("#" + target_select + " option[value*= " + value + "]").prop('disabled', true);
它也不起作用
那么我错过了什么
编辑:回答
由@Casper和@Bilal Siddiqui提供的解决方案
$.each(time_values, function (index, value) {
var set_time = parseInt(value.replace(":", ""));
if (set_time <= time) {
$(`#${target_select} option[value*='${value}']`).prop('disabled', true);
$("#" + target_select + " option[value*='" + value + "']").prop('disabled', true);
}
});
$。每个(时间)值、函数(索引、值){
var set_time=parseInt(value.replace(“:”,”);
如果(设置时间为什么不尝试字符串文字:
$(`#${target_select} option[value*='${value}']`).prop('disabled', true);
$(`#${target_select} option[value*='${value}']`).addClass('disabled');
另一种方法
$("#" + target_select + " option").each(function () {
var set_time = parseInt(this.value.replace(":", ""));
if (set_time <= time) {
$(this).prop('disabled', true);
$(this).addClass('disabled');
}
});
$(“#”+target_select+“option”)。每个(函数(){
var set_time=parseInt(this.value.replace(“:”,”);
如果(设置时间您可以使用旧方法或ES6模板文本
让select1='sel1';
让select2='sel2';
设val='00:00';
$(`#${select1}选项[value*='${val}]`).prop('disabled',true).addClass('disabled');
$(“#”+select2+”选项[value*=”“+val+”]”)。prop('disabled',true)。addClass('disabled');
00:10
00:00
00:10
00:00
您似乎有两个问题-导致问题的原因是什么?尝试解析到00:00
或将其设置为禁用?$(“#“+target_select+”选项[value*=“+value+”])。prop('disabled',true);
应该可以(尝试在=
后面没有空格)-但它“不起作用”如果没有那么远。那么请确定问题的确切位置并将问题缩小到该问题。尝试此$(#${target\u select}选项[value*='${value}']
).prop('disabled',true);你能创建一个完整的例子来演示这个问题吗?包括html和演示这个问题所需的最少代码。所以你只需要删除=
后面的空格,我猜你的意思不是$(#${target\u select}
=>”(或)“。但两者都给了我另一个语法错误。错误:语法错误,无法识别的表达式:#${target_select}选项[value*=${value}]jquery-3.4.1.min.js:2:13061现在感觉很笨。对不起。另外,我添加了另一种方法,这样可以避免同时使用map和loop。我添加了,但确实是“一”。但由于某些原因,它们拒绝了这项工作。我仍然不知道为什么。$(#${target_select}选项[value*='${value}]]
)。prop('disabled',true);这是可行的,因为ES6支持Backtick。
$("#" + target_select + " option").each(function () {
var set_time = parseInt(this.value.replace(":", ""));
if (set_time <= time) {
$(this).prop('disabled', true);
$(this).addClass('disabled');
}
});