【问题标题】:JavaScript Change Color in turnJavaScript 依次改变颜色
【发布时间】:2015-03-07 18:01:30
【问题描述】:

我用 html 创建了一个 8x8 的表格。这些表有颜色。我想在 player1 转身时将此背景的颜色从红色更改为蓝色,我想在 player2 转身时将背景颜色从蓝色更改为红色。

     function rollDice(){

   HTML = changeText(1);

  var status = document.getElementById("status");
  var d1 = Math.floor(Math.random() * 6) + 1;
  status.innerHTML = "You rolled "+d1+". Now take your lands!";
     }

.

      <!-- It's writing whose turn -->

     function changeText(idElement) {
        var element = document.getElementById('element' + idElement);
       if (idElement === 1 || idElement === 2) {
          if (element.innerHTML === 'Sıra 2. oyuncuda') element.innerHTML = 'Sıra 1. oyuncuda';
               else {
                    element.innerHTML = 'Sıra 2. oyuncuda';

               }
             }
          }

.

      <!-- Change table's color -->
      function change(idElement){
        var element = document.getElementById(idElement);

        if(element.style.background === 'blue')
            element.style.background = 'red';


           else{
             element.style.background = 'blue';
         } 
       }

这些是我在 html 中的按钮和文本字段

          <table>
          <tr>
        <td id="1" onclick="change(1)" style="background:Blue">
        1
        </td>
        <td id="9"onclick="change(9)" style="background:Blue">
         9
         </td>
        <td id="17"onclick="change(17)"style="background:Blue">
        17
        </td>
        <td id="25"onclick="change(25)"style="background:Blue">
        25
        </td>
        <td id="33" onclick="change(33)"  style="background:Red">
        33
        </td>
        <td id="41"onclick="change(41)"style="background:Red">
        41
        </td>
        <td id="49"onclick="change(49)"style="background:Red">
        49
        </td>
        <td onclick="change(57)"id="57"style="background:Red">
        57
        </td>
        </tr>
           </table>

.

 <div align="center"><h2 id="element1" onClick="javascript:changeText(1)">Sıra 1. oyuncuda</h2>
 <h2 id="element2" onClick="javascript:changeText(2)"></h2></div>
 <div style= "margin-top:10px" align="center">
 <div style= "margin-top:10px" id="die1" class="dice"></div>
 <button onclick="rollDice()">Roll Dice</button>
 <h2 id="status" style="clear:left;"></h2>
 </div>

我想要的只是轮流改变表格的颜色。我该怎么做?

【问题讨论】:

    标签: javascript html html-table background-color


    【解决方案1】:

    你的问题是你试图改变 element.style.background 这不仅仅是背景颜色。您需要更改:element.style.backgroundColor。

    对于依赖于播放器的颜色更改,我使用了 div "element1" 的 innerHTML。 一号玩家不可能从红色变为蓝色,反之亦然。

    查看 if 条件 ;)

    function rollDice() {
    
      HTML = changeText(1);
      var status = document.getElementById("status");
      var d1 = Math.floor(Math.random() * 6) + 1;
      status.innerHTML = "You rolled " + d1 + ". Now take your lands!";
    }
    
    function changeText(idElement) {
      var element = document.getElementById('element' + idElement);
      if (idElement === 1 || idElement === 2) {
        if (element.innerHTML === 'Sıra 2. oyuncuda') element.innerHTML = 'Sıra 1. oyuncuda';
        else {
          element.innerHTML = 'Sıra 2. oyuncuda';
    
        }
      }
    }
    
    function change(idElement) {
      var element = document.getElementById(idElement);
      var bg = element.style.backgroundColor;
      var text = document.getElementById('element1').innerHTML;
      if (bg == 'Red' && text == 'Sıra 1. oyuncuda') element.style.backgroundColor = 'Blue';
      else if (bg == 'Blue' && text == 'Sıra 2. oyuncuda') {
        element.style.backgroundColor = 'Red';
      } else {
        alert("You are not allowed to do this")
      }
    }
    <table>
      <tr>
        <td id="1" onclick="change(1)" style="background:Blue">1</td>
        <td id="9" onclick="change(9)" style="background:Blue">9</td>
        <td id="17" onclick="change(17)" style="background:Blue">17</td>
        <td id="25" onclick="change(25)" style="background:Blue">25</td>
        <td id="33" onclick="change(33)" style="background:Red">33</td>
        <td id="41" onclick="change(41)" style="background:Red">41</td>
        <td id="49" onclick="change(49)" style="background:Red">49</td>
        <td onclick="change(57)" id="57" style="background:Red">57</td>
      </tr>
    </table>
    <div align="center">
      <h2 id="element1" onClick="javascript:changeText(1)">Sıra 1. oyuncuda</h2>
    
      <h2 id="element2" onClick="javascript:changeText(2)"></h2>
    </div>
    <div style="margin-top:10px" align="center">
      <div style="margin-top:10px" id="die1" class="dice"></div>
      <button onclick="rollDice()">Roll Dice</button>
      <h2 id="status" style="clear:left;"></h2>
    
    </div>

    您也忘记将“tr”放在“table”标签中;)

    另一种方法是,正如我在评论中提到的,创建一个名为 player 的全局变量,并将轮到它的信息保存在其中。

    我也用这个版本制作了Fiddle

    【讨论】:

    • 你好,我想一次又一次地改变是没有问题的。问题是当 player1 转身时,我想将蓝色变为红色,否则我想将红色变为蓝色。这怎么可能?
    • 它在那里完成:查看 onclick 函数中的 if 子句:我在 div 中使用了 innerHTML,您在其中显示了播放器。否则,您可以适当地使用一个全局变量,您可以在其中保存哪些玩家轮到它,这会给您带来麻烦。 Fiddle
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 2019-12-05
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    相关资源
    最近更新 更多