javascript - 悬停时如何突出显示具有相同数据的两个不同表格上的单元格?

标签 javascript jquery html css

所以我有两个不同的 HTML 表格,它们的值可能相同也可能不同。我正在寻找一种方法来突出显示具有相同值的表中的单个单元格。例如在下表中,当鼠标悬停在第一个表中的 1 上时,它将突出显示此单元格以及表 2 中所有包含 1 的单元格。

我可以使用一些简单的 CSS 突出显示单个单元格,但不知道如何突出显示不同表格中的相应单元格。

<table id="table1" border=1>
  <tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
    <td>1</td>
    <td>5</td>
  </tr>
  <tr>
    <td>6</td>
    <td>7</td>
    <td>1</td>
    <td>9</td>
    <td>10</td>
  </td>
</table>

..........

<table id="table2" border=1>
  <tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
    <td>4</td>
    <td>1</td>
  </tr>
  <tr>
    <td>6</td>
    <td>7</td>
    <td>8</td>
    <td>9</td>
    <td>1</td>
  </td>
</table>

给定的答案适用于此示例代码,但我希望使用用户输入的表格来实现它,如下所示

<script type="text/javascript">

function generateTable()
{
    var rows1 = document.getElementById('rows1').value;
    var columns1 = document.getElementById('columns1').value;
    var tableBegin = '<table border="1">\n';
    var body = '';

    for(var i=0; i < rows1; i++)
    {
        body += '<tr>';
        for(var j=0; j < columns1; j++)
        {
            body += '<td>';
            body += Math.floor(Math.random()*11);
            body += '</td>'
        }
        body += '</tr>\n';
    }
    var endTable = '</table>';
document.getElementById('firstTable').innerHTML = tableBegin + body + endTable;
}


function generateTable2()
{
    var rows2 = document.getElementById('rows2').value;
    var columns2 = document.getElementById('columns2').value;
    var tableBegin2 = '<table border="1">\n';
    var body2 = '';

    for(var i=0; i < rows2; i++)
    {
        body2 += '<tr>';
        for(var j=0; j < columns2; j++)
        {
            body2 += '<td>';
            body2 += Math.floor(Math.random()*11);
            body2 += '</td>'
        }
        body2 += '</tr>\n';
    }
    var endTable2 = '</table>';
document.getElementById('secondTable').innerHTML = tableBegin2 + body2 + endTable2;
}
</script>    
<form name="makeTable1">
 Table 1<br>
   Rows:    <input type="text" name="rows1" id="rows1"><br>
   Columns: <input type="text" name="columns1" id="columns1"><br><br>

<input name="generate" type="button" value="Generate Table" onclick='generateTable();'/>
</form>


   Table 2<br>
   Rows:    <input type="text" name="rows2" id="rows2"><br>
   Columns: <input type="text" name="columns2" id="columns2"><br>

<form name="makeTable2">

<input name="generate" type="button" value="Generate Table" onclick='generateTable2();'/>
</form>

 <div id="firstTable"></div>

如何修改要在这些表上实现的答案?

最佳答案

你可以尝试这样的事情(假设 JQuery 对你来说是可以接受的):

$(() => { // we need to attach listeners after the dom is ready
  $('td').on('mouseover', (e)=> { // attach handler on TD-s to 'hover' equivalent event
    let the = $(e.currentTarget).text() // get current element text
    $("td").filter((_,x) => $(x).text() == the).addClass('hover') // find all TD-s with matching content and add marker class
  })
  
  $('td').on('mouseout', ()=> { // attach focus lost on TD-s 
    $(`td`).removeClass('hover') // remove marker class from all TD-s
  })
})
.hover {
  background-color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<table id="table1" border=1>
  <tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
    <td>1</td>
    <td>5</td>
  </tr>
  <tr>
    <td>6</td>
    <td>7</td>
    <td>1</td>
    <td>9</td>
    <td>10</td>
  </tr>
</table>

..........

<table id="table2" border=1>
  <tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
    <td>4</td>
    <td>1</td>
  </tr>
  <tr>
    <td>6</td>
    <td>7</td>
    <td>8</td>
    <td>9</td>
    <td>1</td>
  </tr>
</table>

关于javascript - 悬停时如何突出显示具有相同数据的两个不同表格上的单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58259548/

相关文章:

jQuery 验证 - 两个字段,只需填写一个

javascript - 在此网站上运行的交互式动画角色。这个怎么做?

php - 从 Javascript 调用 PHP 文件

python - Flask 重定向到 url 将参数传递给函数

javascript - 简单的 Javascript 无法在 Internet Explorer 上运行

javascript - Bootstrap FullCalendar 未捕获类型错误 : undefined is not a function

javascript - 单击或点击不会在移动设备上注册

html - CSS 转换而不转换其内容

javascript - 如何在 Javascript 中解析和排序此日期格式(("10/10/2010 13")?

javascript - 如何使用 ionic/Angular 正确处理 jwt token 以进行注销和处理多个 url