Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.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 - Fatal编程技术网

Javascript 从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

我想写一个javascript函数,它可以返回与参数值匹配的HTML表的行号。参数将是列号和相应的单元格值。 下面是一个示例HTML表

   <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.因为这是另一个问题,你可能会因为问两个问题而被否决。所以现在请选择你最喜欢的答案:)工作。谢谢。但是表结构有一些变化。工作。谢谢。但是表结构有一些变化。“我想写一个函数”。太好了,它在哪里?听起来你更希望其他人为你做所有这些,而这不是这个网站的工作方式