2

这是我的下拉菜单---

<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 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 仍在警报,让我知道我做错了什么并且我的逻辑滞后?

4

3 回答 3

5

您的 discselect 以字符串形式出现..因此您需要将大小写更改为:

switch ( discselect ){
  case '1':
    break;
  case '2':
    break;
  case '3':
    break;
  default:
    alert(discselect);
  }
}
于 2012-06-01T09:54:55.233 回答
3

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

您可以在语句中转换discselect为数字:switch

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

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

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

    // ...
}
于 2012-06-01T09:54:01.653 回答
0
onChange="showDiv(this.value);"

应该

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

编辑:和

switch (discselect) {

应该

switch (+discselect) {
于 2012-06-01T09:53:06.123 回答