This is my html page:
<!DOCTYPE html> <html lang="en"> <head> <title>My Page</title> </head> <body> <table> <tr> <td>Apples</td> <td>4</td> </tr> <tr> <td>Bananas</td> <td>13</td> </tr> </table> </body> </html>
I would like to make it so if the quantity of the item is <10, the cell becomes green, while when it is >10, the cell becomes red. I can’t figure how to make it work with one general function, insted of making one specifically for each cell.
Advertisement
Answer
You don’t really need the class assignment. Here is a one-line version using the classes “red” and “green” for the color-definitions:
document.querySelectorAll("tbody td:nth-child(2)") .forEach(td=>td.className=+td.textContent>10?"red":"green")
.red {background-color:red} .green {background-color:green}
<table> <tr><td>Apples</td><td><b>4</b></td></tr> <tr><td>Bananas</td><td>13</td></tr> <tr><td>Oranges</td><td><em>17</em></td></tr> </table>
The advantage of using .textContent
over .innerHTML
is that the code will still work in case there is some markup within the <td>
elements.