在带有if语句的javascript开关中使用'break'

时间:2015-02-20 01:16:04

标签: javascript

每次单击时都需要更改表数据元素的背景颜色。每个表数据都有唯一的ID。声明全局变量td1的初始值为0.值在switch语句中更改为0或1.首先单击始终为“黄色”,但下一次单击也是如此,它应该更改为“蓝色”然后返回'黄'等等。

我尝试了'else'然后'else if'具有相同的结果。

感谢您的帮助

    function changebg(elem)
    {
    td_id=elem.id;

    switch (td_id)
    {
    case "a1" :
      if(td1 = 0)
      {  
      elem.style.backgroundColor = "yellow";
      td1=1;
      break;
      }

    else if (td1 = 1)
      {
      elem.style.backgroundColor = "blue";
      td1=0;
      break;
      }

    case "a2" :
    elem.style.backgroundColor = "yellow";
    break; 
    }
    }

对该函数的调用是'onclick(this)'(snippit:table实际上有几行)。

    <tr>
    <td onclick="changebg(this)" id="a1">1
    <td onclick="changebg(this)" id="a2"> 2
    </tr>

2 个答案:

答案 0 :(得分:3)

测试平等是==; =用于分配。

答案 1 :(得分:1)

我建议您正确关闭所有代码(例如td

然后,最好初始化您需要的变量以避免意外结果。

var td1 = 0; // init flag

function changebg(elem) {
  td_id = elem.id;

  switch (td_id) {
    case "a1":
      if (td1 == 0) {
        elem.style.backgroundColor = "yellow";
        td1 = 1;

      } else if (td1 == 1) {
        elem.style.backgroundColor = "blue";
        td1 = 0;

      }
      break;

    case "a2":
      elem.style.backgroundColor = "yellow";
      break;
  }
}
<table>

  <tr>
    <td onclick="changebg(this)" id="a1">1</td>
    <td onclick="changebg(this)" id="a2">2</td>
  </tr>
</table>