Rumah > Soal Jawab > teks badan
P粉5935361042023-08-25 13:03:07
Kod anda tidak akan berfungsi kerana apabila kod anda mula-mula dijalankan, style
属性没有设置backgroundColor
: style
代表元素的内联样式属性,而你的元素在开始时没有内联样式。当你检查元素的背景是否为red
或gray
时,它既不是红色也不是灰色,因为它没有内联样式(style.backgroundColor
sebenarnya rentetan kosong).
Anda mempunyai beberapa pilihan:
getComputedStyle
来查看元素的background-color
tanpa mengira sama ada ia ditetapkan sebaris atau tidak. background-color
tidak kira sama ada elemen telah ditetapkan. (Jika merah, tukar kepada kelabu; jika tidak, tetapkan kepada merah.) Mana-mana pendekatan boleh mencapai apa yang anda perlukan, bergantung pada berapa banyak fleksibiliti yang anda perlukan dalam penyelesaian anda, saya akan menyerahkan kepada anda untuk membuat keputusan.
P粉2391642342023-08-25 12:44:41
Nilai yang diperoleh daripada style.backgroundColor
mungkin tidak dikembalikan dalam format yang sama seperti yang ditetapkan;
Cara yang berubah secara minimum ialah dengan menyimpan bendera pada elemen (lihat ulasan):
function changeColor(cell) { var red = '#FE2E2E'; var grey = '#E6E6E6'; // 获取标志;如果不存在,则为假值 var flag = cell.getAttribute("data-grey"); if (!flag) { // 变为灰色 cell.setAttribute("data-grey", "true"); cell.style.backgroundColor = red; } else { // 不是灰色,变为红色 cell.setAttribute("data-grey", ""); // 空值为假值 cell.style.backgroundColor = grey; } }
#table tr td { width: 20px; height: 50px; cursor: pointer; background-color: #E6E6E6; border: 1px solid black; }
<table class="table table-bordered" id="table"> <tbody> <tr> <td onclick="changeColor(this)"></td> <td onclick="changeColor(this)"></td> <td onclick="changeColor(this)"></td> <td onclick="changeColor(this)"></td> <td onclick="changeColor(this)"></td> </tr> </tbody> </table>