选择和取消选择表格单元格html/javascript
Select and unselect table cells html/javascript
我有一个表在我的网站。当用户单击单元格时,我需要单元格颜色改变,并在第二次单击时返回默认颜色。我已经完成了第一部分,但不知道如何在第二次点击时恢复到默认颜色。
<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>
我建议创建一个css类.highlight {background-color: '#dcfac9'}
,然后,在javascript中,调用。toggleclass ('highlight')点击行
不要将highlight作为参数传递给函数,只需调用您的功能上点击只有一个这样。然后在函数中进行检验细胞的颜色也会随之变化。
或者如果你想让它更通用,你也可以传递默认值颜色和要改变的新颜色。函数看起来像这样。
function ChangeColour(tableRow, defaultColour, newColour)
{
var bg = tableRow.style.backgroundColor;
if (bg == defaultColour)
{
tableRow.style.backgroundColor = newColour;
}
else
{
tableRow.style.backgroundColor = defaultColour;
}
}
就像@Devasayal上面说的,toggleClass
是你最好的解决方案…
演示小提琴
< Javascript代码/em>
function ChangeColor(elem) {
if (elem.className != "highlight") {
elem.className = "highlight";
} else {
elem.className = "";
}
}
您可以使用类来代替。创建一些简单的函数来添加、删除和切换类:
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>
只需按标记名获取元素,循环遍历每个td
并添加一个事件侦听器。
单击后,切换一个类来添加所请求的背景色。
const tds = document.getElementsByTagName('td');
Object.values(tds).forEach(td => {
td.addEventListener("click", changeColor);
});
function changeColor() {
this.classList.toggle("light-green");
}
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;
}
<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>
相关文章:
- 行上的Primefaces数据表选择javascript回调
- jQuery选择JavaScript生成的元素
- 我如何选择JavaScript“;Id”;通过变量
- bootstrap选择javascript实例化不创建对象
- 如何使用javascript选择javascript对象中的第一项
- 根据下拉选择(Javascript / HTML)动态填充字段
- 使用 jquery 通过其方法选择 javascript 对象
- 自动完成以选择JavaScript中的选项
- 如何正确选择JavaScript模式
- 从 mysql 数据库中选择 javascript 调用
- 要在选择javascript时更改的图像
- 如何使用Capybara选择Javascript生成的选项
- 复选框 选择和取消选择 JavaScript 中的功能
- 如何在不使用id的情况下选择javascript中的第二个单选按钮
- 如何在对象方法中选择JavaScript对象数组?
- 如何在没有元素ID的下拉菜单中选择Javascript选项?
- 选择JavaScript列表更新
- 巢单选按钮选择- javascript
- 如何在jquery中使用javascript实例/通过jquery选择javascript句柄
- 启用文本选择javascript