Javascript JS循环表并根据条件在列中打印文本
我有一个简单的表,我需要根据隐藏列上的条件在特定列中打印文本。一条记录中有多行具有相同的TD ID。我需要做的是检查表中的每一行,并检查status1 gv-field-15-139、status2 gv-field-15-140和status3 gv-field-15-141。如果状态gv-field-15-150之一为“已完成”,我想在状态栏中打印“已完成”。可能吗 $document.readyfunction{ 如果$'tdgv-field-15-139'.text='Completed'| |$'tdgv-field-15'- 140“。文本==“已完成”| |$“tdgv-field-15-141”。文本==“已完成”{ $tdgv-field-15-150.文本“已完成”; } 学名 国籍 地位 状态1 状态2 状态3 学生A 印度 完整的 悬而未决的 悬而未决的 学生乙 中国 完整的 悬而未决的 悬而未决的 循环你的tr,除了第一个tr有th和检查td。虽然你可以用ids解决你的问题,但建议使用类而不是ids $document.readyfunction{ var trs=$'tr'。不是:eq0'; $.eachtrs,函数{ var$this=$this; 如果$this.find'>tdgv-field-15-139'.text='Completed'| | |$this.find'>tdgv-field-15-140'.text='Completed'| | |$this.find'>tdgv-field-15-141'.text='Completed'{ $this.find>tdgv-field-15-150.文本“已完成”; } }; }; 学名 国籍 地位 状态1 状态2 状态3 学生A 印度 完整的 悬而未决的 悬而未决的 学生乙 中国 完整的 悬而未决的 悬而未决的 学生乙 中国 悬而未决的 悬而未决的 悬而未决的 循环你的tr,除了第一个tr有th和检查td。虽然你可以用ids解决你的问题,但建议使用类而不是ids $document.readyfunction{ var trs=$'tr'。不是:eq0'; $.eachtrs,函数{ var$this=$this; 如果$this.find'>tdgv-field-15-139'.text='Completed'| | |$this.find'>tdgv-field-15-140'.text='Completed'| | |$this.find'>tdgv-field-15-141'.text='Completed'{ $this.find>tdgv-field-15-150.文本“已完成”; } }; }; 学名 国籍 地位 状态1 状态2 状态3 学生A 印度 完整的 悬而未决的 悬而未决的 学生乙 中国 完整的 悬而未决的 悬而未决的 学生乙 中国 悬而未决的 悬而未决的 悬而未决的Javascript JS循环表并根据条件在列中打印文本,javascript,html-table,Javascript,Html Table,我有一个简单的表,我需要根据隐藏列上的条件在特定列中打印文本。一条记录中有多行具有相同的TD ID。我需要做的是检查表中的每一行,并检查status1 gv-field-15-139、status2 gv-field-15-140和status3 gv-field-15-141。如果状态gv-field-15-150之一为“已完成”,我想在状态栏中打印“已完成”。可能吗 $document.readyfunction{ 如果$'tdgv-field-15-139'.text='Complete
这个解决方案太简单了,甚至不需要jQuery,我还认为如果把逻辑稍微分解一下,阅读它可能会更好,也就是说,我已经实现了isComplete函数,而不是一个丑陋且长的if语句 仅供参考。ID在整个页面中是唯一的,如果可以的话,最好将它们改为类 编辑 在看过@HMR生成的漂亮的解决方案之后,我想我应该在这个解决方案中包含一些优雅的代码,我不能把所有的功劳都归功于此 //只是速记。 const$e=queryString=>document.querySelectorAllqueryString; 常量项=‘已完成’; //返回一个布尔值。 const isComplete=td=>td.textContent.replace/\/,==term; //一些后备功能。 const fallback==>console.log'Next…'; //呈现更新。 const render=v,t=>v.includestrue?t.textContent=term:fallback; //更新相关的td标签。 常数更新=tr=>{ const tds=Array.fromtr.querySelectorAll'td'; 常量[,,…值]=tds.maptd=>isCompletetd; 常数[,td]=tds; 渲染值,td; }; //迭代相关的tr标记。 const loop==>Array.from$etable tr.1、.forEachtr=>updatetr; //开始这个过程。 环 学名 国籍 地位 状态1 状态2 状态3 学生A 印度 完整的 悬而未决的 悬而未决的 学生乙 中国 完整的 悬而未决的 悬而未决的 学生丙 中国 悬而未决的 悬而未决的 悬而未决的
这个解决方案太简单了,甚至不需要jQuery,我还认为如果把逻辑稍微分解一下,阅读它可能会更好,也就是说,我已经实现了isComplete函数,而不是一个丑陋且长的if语句 仅供参考。ID在整个页面中是唯一的,如果可以的话,最好将它们改为类 编辑 在看过@HMR生成的漂亮的解决方案之后,我想我应该在这个解决方案中包含一些优雅的代码,我不能把所有的功劳都归功于此 //只是速记。 const$e=queryString=>document.querySelectorAllqueryString; 常量项=‘已完成’; //再 转换为布尔值。 const isComplete=td=>td.textContent.replace/\/,==term; //一些后备功能。 const fallback==>console.log'Next…'; //呈现更新。 常量render=v,t=>v.includestrue?t、 text内容=术语:回退; //更新相关的td标签。 常数更新=tr=>{ const tds=Array.fromtr.querySelectorAll'td'; 常量[,,…值]=tds.maptd=>isCompletetd; 常数[,td]=tds; 渲染值,td; }; //迭代相关的tr标记。 const loop==>Array.from$etable tr.1、.forEachtr=>updatetr; //开始这个过程。 环 学名 国籍 地位 状态1 状态2 状态3 学生A 印度 完整的 悬而未决的 悬而未决的 学生乙 中国 完整的 悬而未决的 悬而未决的 学生丙 中国 悬而未决的 悬而未决的 悬而未决的
有两个问题: 你有重复的身份证。ID必须是唯一的。在当前代码中,您将始终获得第一个具有必要ID的元素。因此,您应该使用类 你不是在循环。因为它是一个表,您必须处理每一行,您必须循环所有行,并且基于当前行,您必须检查/更新必要列的值。 $document.readyfunction{ var$tr=$‘表tr’; $。每个$tr,函数索引,tr{ 如果 $'.gv-field-15-139',tr.text==“已完成”|| $'.gv-field-15-140',tr.text==“已完成”|| $'.gv-field-15-141',tr.text==“已完成” { $.gv-field-15-150,tr.text“已完成”; } } }; 学名 国籍 地位 状态1 状态2 状态3 学生A 印度 完整的 悬而未决的 悬而未决的 学生乙 中国 悬而未决的 悬而未决的 悬而未决的
有两个问题: 你有重复的身份证。ID必须是唯一的。在当前代码中,您将始终获得第一个具有必要ID的元素。因此,您应该使用类 你不是在循环。因为它是一个表,您必须处理每一行,您必须循环所有行,并且基于当前行,您必须检查/更新必要列的值。 $document.readyfunction{ var$tr=$‘表tr’; $。每个$tr,函数索引,tr{ 如果 $'.gv-field-15-139',tr.text==“已完成”|| $'.gv-field-15-140',tr.text==“已完成”|| $'.gv-field-15-141',tr.text==“已完成” { $.gv-field-15-150,tr.text“已完成”; } } }; 学名 国籍 地位 状态1 状态2 状态3 学生A 印度 完整的 悬而未决的 悬而未决的 学生乙 中国 悬而未决的 悬而未决的 悬而未决的
不要使用重复的id,您可以使用intead单元格的索引: const table=document.querySelector'table'; //获取除标题以外的所有行 const rows=Array.fromtable.querySelectorAll'tr'.slice 1. ; rows.forEachrow=>{ const cells=Array.from 行。查询选择全部'td' ; //去第三个牢房 常数[,toSet]=单元; //第三个单元格后的所有值 常量[,,…值]=cells.map cell=>cell.innerText.trim//映射到单元格的innerText ; ifvalues。包括“已完成”{ toSet.innerHTML='Completed' } }; 学名 国籍 地位 状态1 状态2 状态3 学生A 印度 xxx 完整的 悬而未决的 悬而未决的 学生乙 中国 xxx 完整的 悬而未决的 悬而未决的 学生丙 未完成 xxx 悬而未决的 悬而未决的 悬而未决的
不要使用重复的id,您可以使用intead单元格的索引: const table=document.querySelector'table'; //获取除标题以外的所有行 const rows=Array.fromtable.querySelectorAll'tr'.slice 1. ; rows.forEachrow=>{ const cells=Array.from 行。查询选择全部'td' ; //去第三个牢房 常数[,toSet]=单元; //第三个单元格后的所有值 常量[,,…值]=cells.map cell=>cell.innerText.trim//映射到单元格的innerText ; ifvalues。包括“已完成”{ toSet.innerHTML='Completed' } }; 学名 国籍 地位 状态1 状态2 状态3 学生A 印度 xxx 完整的 悬而未决的 悬而未决的 学生乙 中国 xxx 完整的 悬而未决的 悬而未决的 学生丙 未完成 xxx 悬而未决的 悬而未决的 悬而未决的
循环表中除第一行以外的所有行,因此=>$'tr'.length-1 .eq函数用于按索引访问每个元素/文本
$(document).ready(function () {
for(i=0;i<$('tr').length-1;i++){
if( ($('td#gv-field-15-139').eq(i).text() == 'Completed') || ($('td#gv-field-15-140').eq(i).text() == 'Completed') || ($('td#gv - field - 15 - 141').eq(i).text() == 'Completed') ) {
$("td#gv-field-15-150").eq(i).text('Completed');
}
}
});
循环表中除第一行以外的所有行,因此=>$'tr'.length-1 .eq函数用于按索引访问每个元素/文本
$(document).ready(function () {
for(i=0;i<$('tr').length-1;i++){
if( ($('td#gv-field-15-139').eq(i).text() == 'Completed') || ($('td#gv-field-15-140').eq(i).text() == 'Completed') || ($('td#gv - field - 15 - 141').eq(i).text() == 'Completed') ) {
$("td#gv-field-15-150").eq(i).text('Completed');
}
}
});
ID必须始终是唯一的
重复的ID会使HTML无效,更重要的是,它会削弱JS/jQ,因为预期ID是唯一的,所以一旦找到,就不会继续第二次出现
身份证。
变化
所有ID都已更改为.class
每行的最后3个具有共享类:。状态
每行的第三行都有一个新类:.primary
参考
演示
三行代码…这就是你所需要的。
$'.status'.eachfunction{
如果$this.text==“已完成”{
$this.prevAll'.primary'.text'Completed';
}
};
学名
国籍
地位
状态1
状态2
状态3
学生A
印度
完整的
悬而未决的
悬而未决的
学生乙
中国
完整的
悬而未决的
悬而未决的
学生丙
美国
错误
悬而未决的
悬而未决的
学生D
法国
悬而未决的
悬而未决的
完整的
ID必须始终是唯一的
重复的id会使HTML无效,更重要的是,它会削弱JS/jQ,因为预期id是唯一的,所以一旦找到,就不会继续第二次出现id。
变化
所有ID都已更改为.class
每行的最后3个具有共享类:。状态
每行的第三行都有一个新类:.primary
参考
演示
三行代码…这就是你所需要的。
$'.status'.eachfunction{
如果$this.text==“已完成”{
$this.prevAll'.primary'.text'Completed';
}
};
学名
国籍
地位
状态1
状态2
状态3
学生A
印度
完整的
悬而未决的
悬而未决的
学生乙
中国
完整的
悬而未决的
悬而未决的
学生丙
美国
错误
悬而未决的
悬而未决的
学生D
法国
悬而未决的
悬而未决的
完整的
不要复制ID,这就是为什么您无法通过第一个ID访问。当JS找到一个id时,它自然会假设这是唯一一个带有该id的标记。将您的id更改为类。不要重复id,这就是为什么您无法通过第一个id访问。当JS找到一个id时,它自然会假设这是唯一一个带有该id的标记。将您的id更改为类。这可能是迄今为止最好的答案,非常好的解决方案!可能是目前为止最好的答案,非常好的解决方案!