Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我想根据正则表达式和条件为HTML表格行着色_Javascript_Html_Jquery_Css - Fatal编程技术网

Javascript 我想根据正则表达式和条件为HTML表格行着色

Javascript 我想根据正则表达式和条件为HTML表格行着色,javascript,html,jquery,css,Javascript,Html,Jquery,Css,我有一个“订单”表,其中第一列是订单ID。我想根据ID列的最后一个数字设置背景色 例如,如果Id为23433,我希望颜色为adcbe3。我尝试了下面的代码,但它不起作用 $function{ $tr.eachfunction{ var firstCol=$tr.findtd:first; var reg1=new RegExp^[0-9]*[0369]$,'g'; var reg2=new RegExp^[0-9]*[147]$,'g'; var reg3=new RegExp^[0-9]*[

我有一个“订单”表,其中第一列是订单ID。我想根据ID列的最后一个数字设置背景色

例如,如果Id为23433,我希望颜色为adcbe3。我尝试了下面的代码,但它不起作用

$function{ $tr.eachfunction{ var firstCol=$tr.findtd:first; var reg1=new RegExp^[0-9]*[0369]$,'g'; var reg2=new RegExp^[0-9]*[147]$,'g'; var reg3=new RegExp^[0-9]*[258]$,'g'; 如果StringfirstCol.match/^[0-9]*[0369]$/{ $this.addClass'row1';//所选类将行涂成绿色// }如果StringfirstCol.match/^[0-9]*[147]$/{ $this.addClass'row2'; }如果StringfirstCol.match/^[0-9]*[258]$/{ $this.addClass'row3'; } }; }; .第1行{ 背景:adcbe3; } .row2{ 背景:e7eff6; } .row3{ 背景:d0e1f9; } 问题是因为firstCol变量包含一个完整的jQuery对象。从问题的上下文来看,您似乎希望这是您选择的td的内部文本。在这种情况下,您需要使用文本

此外,您需要在each循环中使用this关键字来仅引用当前tr。您当前的逻辑会将该类添加到DOM中的每个tr中

$function{ $tr.eachfunction{ var firstCol=$this.findtd:first.text; 如果firstCol.match/^[0-9]*[0369]$/{ $this.addClass'row1'; }如果firstCol.match/^[0-9]*[147]$/{ $this.addClass'row2'; }如果firstCol.match/^[0-9]*[258]$/{ $this.addClass'row3'; } }; }; .row1{背景:adcbe3;} .row2{背景:e7eff6;} .row3{背景:d0e1f9;} 23433 23434 23435 23436 23444
您根本不需要正则表达式-您所做的只是基于每个数字的分组应用一个类,其排列为3,这可以由模运算符确定

请注意,有三行是不同的,另一行是复制的

你所要做的就是得到第一列的文本,最后一个字符,因为你按照你的方式对项目进行分组,这个类可以通过3的模来应用。最后加1纯粹是因为数字是零索引的,但是类是1索引的。第一行是行1,而不是行0

$function{ $tr.eachfunction{ var firstCol=$this.findtd.first.text; var lastChar=firstCol.charAtfirstCol.length-1; var index=parseIntlastChar%3+1; $this.addClass'row'+索引 }; }; .第1行{ 背景:adcbe3; } .row2{ 背景:e7eff6; } .row3{ 背景:d0e1f9; } 23430 23431 23432 23433 23434 23435 23436 23437 234338 23439 23433
请包括您的html?可以澄清以下内容,您提到您希望根据表格的最后一个数字更改背景颜色。因此,如果id字段是23433并且是最后一个,那么它应该是adcbe3?或者id 23433所在的任何地方,它都应该是adcbe3?这不好,因为23433和23444是相同的颜色。不,它不是,正如我刚才对questionWell=>所做的编辑所示:自从jQuery 3.4以来,第一个选择器已被弃用。你绝对不需要使用它。使用.first代替。@AlwaysHelping-谢谢你-我只是在关注OP的内容-但是会更新你的建议。谢谢