在开关

时间:2015-11-12 14:41:45

标签: javascript jquery if-statement switch-statement

美好的一天!想要在switch上更改我的if \ else语句。

我有这个工作代码。

$tbody.append([
'<td class="view">' + (row.age === '1' ? '18' : row.age === '2'  ? '18-24' : row.age === '3' ? '25-35' : row.age === '4' ? '35+' : 'any' ) + '</td>',
]);

我试图用这种结构替换它:

        var text= 0;

        switch (row.age) {
          case 0:
            text= "any";
            break;
          case 1:
            text = "18";
            break;
          case 2:
            text = "18-24";
            break;
          case 3:
            text = "25-34";
            break;
          case 3:
            text = "35+";
            break;
        }

$tbody.append([
                '<td class="view">' + text + '</td>',
]);

但它不起作用。结果总是给出0。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

如果row.age是一个字符串,那么如果row.age是整数,则需要将case值设为stringinteger

switch (row.age) {
          case '0':
            text= "any";
            break;
          case '1':
            text = "18";
            break;
          case '2':
            text = "18-24";
            break;
          case '3':
            text = "25-34";
            break;
          case '3':
            text = "35+";
            break;
        }

根据您的问题,if-elserow.age是字符串,因此在switch-case块中您必须将其作为整数进行比较。因为,切换匹配就好 ===严格匹配。

答案 1 :(得分:0)

ToolStriprow.age === '1'不同。第一个是字符串,第二个是int

答案 2 :(得分:0)

尝试在[删除].append(),这会返回错误

NotFoundError: Failed to execute 'appendChild' on 'Node': The new child element is null.

&#13;
&#13;
var row = {};
row.age = 1;
var text = "";

switch (row.age) {
  case 0:
    text = "any";
    break;
  case 1:
    text = "18";
    break;
  case 2:
    text = "18-24";
    break;
  case 3:
    text = "25-34";
    break;
  case 3:
    text = "35+";
    break;
}


$("body").append("<span>" + text + "</span>")
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
&#13;
&#13;