JS Switch案例无法正常工作总是执行默认值

时间:2012-06-01 09:48:41

标签: javascript html css switch-statement

这是我的下拉菜单---

<select name="category" id="category" onChange="showDiv(this.value);" >
    <option value="">Select This</option>
    <option value="1">Nokia</option>
    <option value="2">Samsung</option>
    <option value="3">BlackBerry</option>
    <option value="4">Spice</option>
    <option value="5">HTC</option>
    </select>

这是我的span类,我想在选择的基础上显示数据

<span class="catlink"> </span>

我的JS功能(虽然当我通过if条件执行此功能时功能正常)

function showDiv(discselect) {
    switch(discselect) {
    case 1:
        document.getElementsByClassName("catlink")[0].innerHTML = '<a href="nokia.txt">Click To Download</a>';
        break;
    case 2:
        document.getElementsByClassName("catlink")[0].innerHTML = '<a href="samsung.txt">Click To Download</a>';
        break;
    case 3:
        document.getElementsByClassName("catlink")[0].innerHTML = '<a href="blackberry.txt">Click To Download</a>';
        break;
    default:
        alert(discselect);
        document.getElementsByClassName("catlink")[0].innerHTML = 'aaaa';
    }
}

现在每次执行默认情况时运行代码而1,2,3仍在提醒,让我知道我做错了什么,我的逻辑是否滞后?

3 个答案:

答案 0 :(得分:5)

您的光盘选择是以字符串形式出现的......因此您需要将案例更改为:

switch ( discselect ){
  case '1':
    break;
  case '2':
    break;
  case '3':
    break;
  default:
    alert(discselect);
  }
}

答案 1 :(得分:3)

Javascript的case测试是严格的:如果discselect是字符串而不是数字,则代码将始终采用默认分支。

您可以将discselect转换为switch声明中的数字:

switch (+discselect) {
    // ...
}

或者在case测试中使用字符串:

switch (discselect) {
    case "1":
        // ...
        break;

    // ...
}

答案 2 :(得分:0)

onChange="showDiv(this.value);"

应该是

onchange="showDiv(this.options[this.selectedIndex].value)"

编辑: 和

switch (discselect) {

应该是

switch (+discselect) {