cari

Rumah  >  Soal Jawab  >  teks badan

"Kenapa style.backgroundColor tiada kesan?"

<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>
P粉969253139P粉969253139466 hari yang lalu538

membalas semua(2)saya akan balas

  • P粉593536104

    P粉5935361042023-08-25 13:03:07

    Kod anda tidak akan berfungsi kerana apabila kod anda mula-mula dijalankan, style属性没有设置backgroundColorstyle代表元素的内联样式属性,而你的元素在开始时没有内联样式。当你检查元素的背景是否为redgray时,它既不是红色也不是灰色,因为它没有内联样式(style.backgroundColorsebenarnya rentetan kosong).

    Anda mempunyai beberapa pilihan:

    • Gunakan getComputedStyle来查看元素的background-color tanpa mengira sama ada ia ditetapkan sebaris atau tidak.
    • Menyediakan kes lalai yang akan menetapkan elemen 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.

    balas
    0
  • P粉239164234

    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>

    balas
    0
  • Batalbalas