我的网站上有一张桌子。我需要在用户点击它时更改单元格颜色,并在第二次单击时返回默认颜色。我已完成第一部分,但不知道如何在第二次点击时恢复为默认颜色。
<head>
<script type="text/javascript">
function ChangeColor(tableRow, highLight)
{
if (highLight)
{
tableRow.style.backgroundColor = '#dcfac9';
}
else
{
tableRow.style.backgroundColor = 'white';
}
}
</head>
<body>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr onClick="ChangeColor(this, true);"
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr onClick="ChangeColor(this, true);">
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
<tr onClick="ChangeColor(this, true);">
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
</table>
答案 0 :(得分:0)
只需按标记名称获取元素,循环遍历每个td
并添加事件监听器。
单击,切换将添加所请求背景颜色的类。
const tds = document.getElementsByTagName('td');
Object.values(tds).forEach(td => {
td.addEventListener("click", changeColor);
});
function changeColor() {
this.classList.toggle("light-green");
}
&#13;
table,
tr,
td {
border: 1px solid black;
border-collapse: collapse;
}
td {
padding: 10px 13px;
}
td:hover {
background-color: grey;
color: white;
cursor: pointer;
}
.light-green {
background-color: #dcfac9;
}
.light-green:hover {
background-color: green;
}
&#13;
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
</table>
&#13;
答案 1 :(得分:0)
不要将高亮作为参数传递给您的函数,只需调用您的 点击功能只有一个这样。然后在功能中你可以检查 细胞的颜色并相应地改变。
或者如果你想让它更通用,你也可以传递默认值 颜色和要更改的新颜色。该功能将如下所示。
function ChangeColour(tableRow, defaultColour, newColour)
{
var bg = tableRow.style.backgroundColor;
if (bg == defaultColour)
{
tableRow.style.backgroundColor = newColour;
}
else
{
tableRow.style.backgroundColor = defaultColour;
}
}
答案 2 :(得分:0)
我建议像创建一个css类 .highlight {background-color:&#39;#dcfac9&#39;}
然后,在javascript中,点击该行时调用.toggleClass(&#39;突出显示&#39;)。
答案 3 :(得分:0)
正如@Devasayal所说toggleClass
对你来说是最好的解决方案......
<强> Demo Fiddle 强>
Javascript代码
function ChangeColor(elem) {
if (elem.className != "highlight") {
elem.className = "highlight";
} else {
elem.className = "";
}
}
答案 4 :(得分:0)
您可以改用班级。创建一些简单的函数来添加,删除和切换类:
function hasClass(el, className) {
return (' ' + el.className + ' ').indexOf(' ' + className + ' ') != -1;
}
function addClass(el, className) {
if (!hasClass(el, className)) {
el.className += (el.className? ' ' : '') + className;
}
}
function removeClass(el, className) {
if (hasClass(el, className)) {
el.className = (' ' + el.className + ' ').replace(' ' + className + ' ', ' ');
}
}
function toggleClass(el, className) {
hasClass(el, className)? removeClass(el, className) : addClass(el, className);
}
然后,给出一个类:
.red { background-color: red;}
使用它们:
<div id="d0">red</div>
<button onclick="toggleClass(document.getElementById('d0'), 'red')">Toggle red</button>