0

我用 PHP 做了下拉菜单,效果很好。当所选项目发生变化时,我调用函数changePeriod()。

$options[0] = '--period--';
$options[1] = 'Daily';
$options[2] = 'Weekly';
$options[3] = 'Monthly';

<td><?php echo form_dropdown('period', $options, '0', 'id="period" onchange="changePeriod()"'); ?></td>

在这里,您可以看到 HTML 源代码,它是上述代码的结果。

<td>
   <select name="period" id="period" onchange="changePeriod()">
      <option value="0" selected="selected">--period--</option>
      <option value="1">Daily</option>
      <option value="2">Weekly</option>
      <option value="3">Monthly</option>
   </select>
</td>

在这个函数中,我需要获取所选项目的值,但开关上方的 2 个警报都给出了Undefined作为结果。有谁知道为什么我得到未定义而不是所选选项的值?它与一个动态下拉列表一起工作,该下拉列表中填充了来自数据库的 foreach。

function changePeriod() {
    alert(document.getElementById("period").selectedIndex);
    alert(document.getElementById("period").value);

    switch (document.getElementById("period").selectedIndex) {
        case 1:
            alert("daily");
            break;
        case 2:
            alert("weekly");
            break;
        case 3:
            alert("monthly");
            break;
    }
}

基本上:为什么我不能获得所选选项的值,我该如何解决?

感谢您的帮助。

4

1 回答 1

0

生成的 HTML 是这样的:

<select onchange="changePeriod()" id="period">
        <option value="0">--period--</option>
        <option value="1">Daily</option>
        <option value="2">Weekly</option>
        <option value="3">Monthly</option>
    </select>
    <script type="text/javascript">
        function changePeriod(event) {
            alert(document.getElementById("period").selectedIndex);
            alert(document.getElementById("period").value);

            switch (document.getElementById("period").selectedIndex) {
                case 1:
                    alert("daily");
                    break;
                case 2:
                    alert("weekly");
                    break;
                case 3:
                    alert("monthly");
                    break;
            }
        }
    </script>

如果是,它对我有用。

你为什么不使用 jquery,你可以用更少的代码做任何事情。

编辑:

jQuery的解决方案:

$("#period").change(function(){
   alert("The Value: "+$(this).val());
   switch ($(this).val()) {
            case 1:
                alert("daily");
                break;
            case 2:
                alert("weekly");
                break;
            case 3:
                alert("monthly");
                break;
        }
});

看看这里:http: //jsfiddle.net/rfWjd/

于 2013-02-18T18:57:45.803 回答