javascript - HTML 表格 - 如果列包含特定符号,则替换列中的值

标签 javascript jquery html-table

我需要编写一个 JavaScript/JQuery 函数,如果列包含星号 (*) 符号,则该函数将列中的整数值替换为 - 。

一直在尝试寻找替换表中值的合适示例,但只找到了如果列包含值则返回 true 或 false 的函数。

我需要检查表中的所有列,并仅当字段包含整数值时才替换列中出现一次或多次 * 符号的位置。

提供了一个示例表,其中包含 * 符号作为引用:

<table class="users">
                        <tbody><tr>
                                <th scope="row"></th>
                                <th scope="col">May17 - Apr18</th>
                                <th>Jun17 - May18</th>
                                <th>Jul17 - Jun18</th>
                                <th>Aug17 - Jul18</th>
                                <th>Sep17 - Aug18</th>
                                <th>Oct17 - Sep18</th>
                                <th>Nov17 - Oct18</th>
                                <th>Dec17 - Nov18</th>
                                <th>Jan18 - Dec18</th>
                                <th>Feb18 - Jan19</th>
                                <th>Mar18 - Feb19</th>
                                <th>Apr18 - Mar19</th>
                                <th>May18 - Apr19</th>
                                <th>Jun18 - May19</th>
                        </tr>
                        <tr>
                                <td>Opiate</td>
                                <td>8</td>
                                <td>9</td>
                                <td>9</td>
                                <td>-</td>
                                <td>11</td>
                                <td>11</td>
                                <td>11</td>
                                <td>11</td>
                                <td>12</td>
                                <td>13</td>
                                <td>13</td>
                                <td>12</td>
                                <td>12</td>
                                <td>11</td>
                        </tr>
                        <tr>
                                <td>Non-opiate only</td>
                                <td>*</td>
                                <td>*</td>
                                <td>*</td>
                                <td>-</td>
                                <td>*</td>
                                <td>*</td>
                                <td>*</td>
                                <td>*</td>
                                <td>*</td>
                                <td>*</td>
                                <td>*</td>
                                <td>*</td>
                                <td>*</td>
                                <td>*</td>
                        </tr>
                        <tr>
                                <td>Non-opiate and Alcohol</td>
                                <td>8</td>
                                <td>8</td>
                                <td>8</td>
                                <td>-</td>
                                <td>6</td>
                                <td>6</td>
                                <td>*</td>
                                <td>*</td>
                                <td>*</td>
                                <td>*</td>
                                <td>*</td>
                                <td>*</td>
                                <td>*</td>
                                <td>*</td>
                        </tr>
                        <tr>
                                <td>Alcohol only</td>
                                <td>12</td>
                                <td>11</td>
                                <td>13</td>
                                <td>-</td>
                                <td>15</td>
                                <td>17</td>
                                <td>21</td>
                                <td>20</td>
                                <td>21</td>
                                <td>23</td>
                                <td>24</td>
                                <td>24</td>
                                <td>24</td>
                                <td>24</td>
                        </tr>

                </tbody></table>

最佳答案

我已经开始为您制定解决方案,请告诉我我是否走在正确的轨道上,我会完成它。这只是一个概念证明,我将数据转变为“红色”。

首先Jquery选择列:

/* Set all the cells in columns with * in the heading to red */
columnTh = $("table td:contains('*')"); 
// Get the index & increment by 1 to match nth-child indexing
columnIndex = columnTh.index() + 1; 
// Set all the elements with that index in a tr red
$('table tr td:nth-child(' + columnIndex + ')').css("color", "#F00"); 

在 jsfiddle 中处理这个问题:http://jsfiddle.net/2xU8t/549/

我正在接近正确的想法吗?让我知道,我会继续。

<小时/>

更新了答案 - 扩展了我之前发布的内容并更新了 fiddle :http://jsfiddle.net/tremor/2xU8t/603/

var parentTH = []; 
var cells = $("td:contains('*')");

cells.each(function (key, value) {
 if (value.textContent == "*") {
  var $th = $(value).closest('table').find('th').eq(value.cellIndex); 
  if (!parentTH.includes($th[0])) {
   parentTH.push($th[0]);
  } 
 }
});

for (var i = 0; i < parentTH.length; i++) {
 columnTh = $(parentTH[i]); 
 columnIndex = columnTh.index() + 1; 
 $('table tr td:nth-child(' + columnIndex + ')').each(function (key, value) {
   var thisKey = key + 1;
   if (!isNaN(value.innerText)) {
     value.innerHTML = "-";
     $(value).css("color", "#F00");
   }
 });
};

关于javascript - HTML 表格 - 如果列包含特定符号,则替换列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51823358/

相关文章:

javascript - 获取 javascript 函数参数

javascript - jQuery $.get 和 $.parseXML 获取 Vimeo 视频持续时间

javascript - 带有删除行选项的动态表

html - 如何使用div创建表格

css - 使用 CSS 的盒子阴影

javascript - 三个数组之间的联合

javascript - 仅针对页面上多个按钮的一个 ID(或类)

javascript - 问题更新 css 转换的 div 的高度(FlexBox,Sass)

jquery - 为什么 Web 服务返回数据为 msg.d

JQuery:如何将事件附加到模板对象?