Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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 如何筛选表、在json数据中查找匹配项并添加相应的链接_Javascript_Jquery_Html_Filter - Fatal编程技术网

Javascript 如何筛选表、在json数据中查找匹配项并添加相应的链接

Javascript 如何筛选表、在json数据中查找匹配项并添加相应的链接,javascript,jquery,html,filter,Javascript,Jquery,Html,Filter,我想筛选表的第二列,在我的配置文件中找到匹配的条目,并使用attr'href',$link将名称设置为相应的链接 我试过用几种不同的方法来做,但我似乎无法让它发挥作用 变量配置文件=[ {姓名:Susie,链接:www.google.com}, {姓名:约翰,链接:www.yahoo.com} ]; 名称 1音乐 约翰 您可以使用每个for tr和filter来检查数组中的值,如下所示 var profiles = [ {"name": "Susie", "link": "www.goog

我想筛选表的第二列,在我的配置文件中找到匹配的条目,并使用attr'href',$link将名称设置为相应的链接

我试过用几种不同的方法来做,但我似乎无法让它发挥作用

变量配置文件=[ {姓名:Susie,链接:www.google.com}, {姓名:约翰,链接:www.yahoo.com} ]; 名称 1音乐 约翰 您可以使用每个for tr和filter来检查数组中的值,如下所示

var profiles = [
  {"name": "Susie", "link": "www.google.com"},
  {"name": "John", "link": "www.yahoo.com"}
];
$(document).ready(function(){
$('tr').each(function(index,item){
 var value = $(item).find('td').eq(1).text();
 var exist = profiles.filter(c=>c.name == value);
 if(exist.length > 0){

    var link = exist[0].link;

    $(item).find('td').eq(1).html("<a href='"+ link + "'>" + value + "</a>");
 }
})
})
变量配置文件=[ {姓名:Susie,链接:www.google.com}, {姓名:约翰,链接:www.yahoo.com} ]; $document.readyfunction{ $'tr'。每个函数索引,项{ var值=$item.find'td'.eq1.text; var exist=profiles.filterc=>c.name==value; ifexist.length>0{ var link=exist[0]。链接; $item.find'td'.eq1.html; } } } 名称 1音乐 约翰
以下是为您提供查询解决方案的解决方案

变量配置文件=[ {姓名:Susie,链接:www.google.com}, {姓名:约翰,链接:www.yahoo.com} ]; var getTableRows=document.querySelectorAlltbody tr; var totalRows=getTableRows.length; var i=0; 而我却在争吵{ 让name=getTableRows[i].childNodes[1].innerHTML;
forlet j=0;j只需使用jQuery,我假设您可以使用它?动态添加条目。另外,不要使用表。您应该将s与flexbox结合使用。请参见示例:

变量配置文件=[{ 姓名:苏西, 链接:http://www.google.com }, { 姓名:约翰, 链接:http://www.yahoo.com } ]; $document.readyfunction{ 对于变量i=0;i部门{ 显示器:flex; 边框底部:1px纯黑; } 人物>分区>分区{ 弹性:1; 填充:0.5em; } 人 Html部分:

<table id="myTable">
    <thead>
        <tr>
            <th>#</th>
            <th>Name</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>Susie</td>
        </tr>
    <tr>
            <td>15</td>
            <td>TEST1</td>
        </tr>
        <tr>
            <td>2</td>
            <td>John</td>
        </tr>
    <tr>
            <td>3</td>
            <td>Test</td>
        </tr>
</tbody>
JavaScript:

var profiles = [
    {"name": "Susie", "link": "www.google.com"},
    {"name": "John", "link": "www.yahoo.com"},
    {"name": "TEST1", "link": "www.yahoo.com"}
];

var trs = document.querySelectorAll("#myTable tbody tr");
Array.from(trs).forEach(a => {
    var trname = a.children[1].innerText;
    var search = profiles.find(x => x.name == trname);
    if (search != null) {
        a.children[1].innerHTML = '<a href="' + profiles.find(x => x.name == trname).link + '">' + trname + '</a>';
        a.style.display = "";
    } else {
        a.style.display = "none";
    }
  });

你能展示这些不同的方式吗?注意:你还应该在链接之前包含http://链接,否则浏览器会将链接视为一个相对url!谢谢你这么详细的回答!不幸的是,我正在使用的表已经用php动态构建,包括许多其他数据。