我需要编写一个 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/