次の変更されたプレーンな JavaScript は<td>
、必要に応じて要素に色を付けます。
function checkForm() {
var tds = document.querySelectorAll('td[id]');
for (var j = 0; j < tds.length; j++) {
var i = tds[j].innerHTML;
if(i < 10){
tds[j].style.backgroundColor = 'green';
} else if(i >= 11 && i <= 20){
tds[j].style.backgroundColor = 'yellow';
} else if(i > 20){
tds[j].style.backgroundColor = 'red';
}
}
}
ただし、一意の ID 値を指定するには、HTML を変更する必要があります<td>
。たとえば、
<body onload="checkForm();">
<table id="tableData" name="tableData">
<tr>
<td>abc</td>
<td id="a">5</td>
<td>abcd</td>
</tr>
<tr>
<td>aaaa</td>
<td id="b">15</td>
<td>bbbb</td>
</tr>
<tr>
<td>ccc</td>
<td id="c">25</td>
<td>dddd</td>
</tr>
</table>
</body>
色が必要なのが常にid
中央のセルである場合は、 s を完全に削除して、「常に中央のセル」であるという事実に依存することができます。たとえば、代わりに次のセレクターを使用します。
var tds = document.querySelectorAll('td:nth-child(2)');
唯一の制限は、querySelectorAll
IE<9 ではサポートされていないことです。他のすべてのブラウザはそれをサポートしています。
を必要とするセルbackground-color
は常に 2 番目のセルであるため、CSS の nth-child セレクターを in の引数として使用して、 「親の 2 番目の子要素をquerySelectorAll()
選択する」ことができます。この場合は.<td>
<tr>
したがって、次の HTMLtd:nth-child(2)
の要素を検索します。<td>two</td>
<tr>
<td>one</td>
<td>two</td>
<td>three</td>
</tr>
どのように機能するかのいくつかの例を参照してください:nth-child
。
id
-less ソリューションのデモ(色付けするセルが常に中央のセルの場合)。
:nth-child
OP は IE8 でスタックしており、IE8 は代替の隣接兄弟コンビネータをサポートしていないため、2番目の子をターゲットにするために使用できますが、3 番目のみが存在<td>
し、3番目には数字が含まれていてはならないという警告があります。
アップデート:
IE8 で作業し、6番目の列に追加する必要があるという実際の要件に基づいて、(読みやすく) よりシンプルでクロスブラウザー互換性の高い jQuery ソリューションを次に示します。background-color
jsBin デモ(IE8 で動作するように)
HTML
から削除onload="checkForm();
します<body>
<table id="tableData" name="tableData">
<tr>
<td></td><td></td><td></td><td></td>
<td>abc</td>
<td>5</td>
<td>abcd</td>
</tr>
<tr>
<td></td><td></td><td></td><td></td>
<td>aaaa</td>
<td>15</td>
<td>bbbb</td>
</tr>
<tr>
<td></td><td></td><td></td><td></td>
<td>ccc</td>
<td>25</td>
<td>dddd</td>
</tr>
</table>
JavaScript
$(function(){
var tds = $('td:nth-child(6)');
for (var j = 0; j < tds.length; j++) {
var i = tds[j].innerHTML;
if(i < 10){
tds[j].style.backgroundColor = 'green';
} else if(i >= 11 && i <= 20){
tds[j].style.backgroundColor = 'yellow';
} else if(i > 20){
tds[j].style.backgroundColor = 'red';
}
}
});