Javascript 从html表中检索与给定的多个单元格值匹配的行号
我想写一个javascript函数,它可以返回与参数值匹配的HTML表的行号。参数将是列号和相应的单元格值。 下面是一个示例HTML表Javascript 从html表中检索与给定的多个单元格值匹配的行号,javascript,html,Javascript,Html,我想写一个javascript函数,它可以返回与参数值匹配的HTML表的行号。参数将是列号和相应的单元格值。 下面是一个示例HTML表 <table> <tr> <td>Id</td> <td>Name</td> <td>City</td> </tr> <tr> <td><span>1
<table>
<tr>
<td>Id</td>
<td>Name</td>
<td>City</td>
</tr>
<tr>
<td><span>1</span></td>
<td>ABC</td>
<td style="display:none;"><input type="text" value="Pune"/></td>
<td><input type="text" value="Pune"/></td>
</tr>
<tr>
<td><span>2</span></td>
<td>XYZ</td>
<td style="display:none;"><input type="text" value="Pune"/></td>
<td><input type="text" value="Pune"/></td>
</tr>
</table>
身份证件
名称
城市
1.
基础知识
2.
XYZ
使用这个表,我想调用javascript函数findCumber(第1列,对应的单元格值1,第2列,对应的单元格值2)示例:-Fin溺水数字(1,“2”,3,“Pune”);它应该返回第2行 您可以通过使用Jquery来完成。可能您将e1和e3作为
td
索引,将e2和e4作为td
文本,那么此代码的工作方式与您的查询类似
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js'></script>
<script>
function FindRowNumber(e1,e2,e3,e4)
{
var aReturn = false;
$('table tr').each(function( index ){
var a = $(this).children('td').eq(e1 - 1).text();
var b = $(this).children('td').eq(e3 - 1).text();
if(a == e2 && b == e4)
{
aReturn = index;
}
});
return(aReturn);
}
var a= FindRowNumber(1,"2",3,"Pune");
console.log(a);
</script>
函数号(e1、e2、e3、e4)
{
var aReturn=false;
$('table tr')。每个(函数(索引){
var a=$(this.children('td').eq(e1-1).text();
var b=$(this.children('td').eq(e3-1).text();
如果(a==e2&&b==e4)
{
aReturn=指数;
}
});
返回(aReturn);
}
var a=FindCumber(1,“2”,3,“Pune”);
控制台日志(a);
document/Element.querySelectorAll
可用于访问作为集合的元素,index
可用于访问相应的元素
在提供的示例中,基于0
的索引被认为是不必要的,因为我觉得从1
开始操作索引是不必要的
函数findCumber(colNum1、colNum1Value、colNum2、colNum2Value){
var elems=document.querySelectorAll('tr');
对于(变量i=0,iLen=elems.length;i
身份证件
名称
城市
1.
基础知识
浦那
2.
XYZ
浦那
如果您可以使用jQuery,那么您可以使用如下选择器来实现这一点tr:has(td:eq([cell1Index]):contains([cell1Value]):has(td:eq([cell2Index]):contains([cell2Value])
下面是一个示例:
var rowIndex = $("tr:has(td:eq(0):contains('1')):has(td:eq(2):contains('Pune'))").index()
在本例中,索引从0
开始
在vanilla JavaScript中,您可以使用以下内容执行相同的操作:
函数getRowIndex(cell1Index、cell1Value、cell2Index、cell2Value){
var指数=-1;
var rows=document.querySelectorAll(“tr”);
对于(变量i=0;i
身份证件
名称
城市
1.
基础知识
浦那
2.
XYZ
浦那
您最初的问题是:如何用javascript解析HTML表。
为此,您可以首先查看以下答案:
编辑后,您希望从…
我建议您为每列编写特定的函数,并将它们存储在各自索引处的数组中
然后,您的代码可以如下所示:
let getValue = [
(e) => ..., // write your function for Id here
(e) => e.textContent, // getter for Name value
(e) => ... // write your function for City here
];
function FindRowNumber (c1, v1, c2, v2) {
let table = document.getElementsByTagName("table")[0];
let rows = table.querySelectorAll("tr");
return rows.reduce((acc, row, idx) => {
if ( acc !== null ) return acc; // match already found
let cols = row.querySelectorAll("td");
if ( !(getValue[c1](cols[c1]) === v1 && getValue[c2](cols[c2]) === v2) ) // non-matching row
return acc;
return idx; // match found!
}, null);
}
您可以尝试以下代码:
函数findCumber(cn1、v1、cn2、v2){
var table=document.querySelector(“#table”);
变量行=table.querySelectorAll(“tr”);
var msg=“不存在这样的行”
对于(i=1;我正在工作。谢谢。但是表结构有一些变化。我已经投票通过了答案。但是DOM中还有一点变化。提前谢谢。不,亲爱的。你能从隐藏的td.Working中删除输入标记吗。谢谢。但是表结构有一些变化。更新了答案。我让你做最后的工作,从colu中获取值mns.因为这是另一个问题,你可能会因为问两个问题而被否决。所以现在请选择你最喜欢的答案:)工作。谢谢。但是表结构有一些变化。工作。谢谢。但是表结构有一些变化。“我想写一个函数”。太好了,它在哪里?听起来你更希望其他人为你做所有这些,而这不是这个网站的工作方式