"Kenapa style.backgroundColor tiada kesan?"
P粉969253139
2023-08-24 16:47:18
<p>Cuba tukar warna sel dengan mengklik padanya. </p>
<p>Sel biasanya berwarna kelabu dan harus bertukar merah apabila diklik buat kali pertama. Apabila saya mengklik pada sel merah ia akan bertukar menjadi kelabu semula. </p>
<p><br /></p>
<pre class="brush:js;toolbar:false;">function changeColor(sel) {
var merah = '#FE2E2E';
var kelabu = '#E6E6E6';
if (cell.style.backgroundColor == kelabu) {
cell.style.backgroundColor = merah;
} lain {
if (cell.style.backgroundColor == merah) {
cell.style.backgroundColor = kelabu;
}
};
};</pre>
<pre class="brush:css;toolbar:false;">#table tr td {
lebar: 20px;
ketinggian: 50px;
kursor: penunjuk;
warna latar belakang: #E6E6E6;
sempadan: 1px hitam pejal;
}</pre>
<pre class="brush:html;toolbar:false;"><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></pre>
<p><br /></p>
<p>Saya juga mencuba <code>.style.bgColor</code>, <code>rgb</code> dan <code>if (cell.style.backgroundColor ===</code> , tetapi ini juga tidak berfungsi. Nilai warna latar belakang sel sama ada dihantar dalam <em>.backgroundColor</em>:<strong>''</strong>, atau diluluskan dalam <em>. bgColor< /em>: <strong>undefined</strong>
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.
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):