带有Redirect的switch语句

时间:2010-09-10 18:33:18

标签: javascript

好的,这是交易,我正在尝试将switch语句重定向到另一个页面,具体取决于在选择框中选择了哪个选项。以下是我正在使用并试图弄清楚的一个示例,任何帮助都会大大降低。

    <html>
<body>
<form name="form1">
<select name="select1">
<option value="p1">p1</option>
<option value="p2">p2</optino>
</select>
</form>


<script type="text/javascript">
<!--
var sel = document.form1.select1;
var txt = sel.options[sel.selectedIndex].text;
var opt = sel.options[sel.selectedIndex].value;

switch (sel)
{
  case 'p1': window.location = 'http://www.yahoo.com'
            break;
  case 'p2': window.location = 'http://www.google..com'
            break;
}



</script>

<p>Set the variable to different value and then try...</p>
</body>
</html>

4 个答案:

答案 0 :(得分:4)

我建议你避免使用switch语句。怎么样?

<select name="select1">
  <option data-url="http://www.yahoo.com" value="p1">p1</option>
  <option data-url="http://www.google.com" value="p2">p2</option>
</select>

document.getElementById("select1").onchange = function () {
    var url = this.options[this.selectedIndex].getAttribute("data-url");
    window.location = url;
};

编辑:我将示例更改为使用html 5 data attributes(不用担心,所有浏览器都支持它们),因为您需要其他值的属性。

答案 1 :(得分:1)

我注意到你没有将更改处理程序绑定到select,所以当用户选择一个值时没有任何反应。

答案 2 :(得分:1)

你有一些拼写错误,你的第二个“/选项”和你的“google.com”。 并且switch语句与您的错误无关。 您没有事件侦听器/ onchange处理程序,并且您没有使用select选项

中的值进行切换

https://developer.mozilla.org/en/DOM/element.onchange https://developer.mozilla.org/en/DOM/element.addEventListener

答案 3 :(得分:1)

  1. 您需要绑定事件处理程序
  2. 您的开关使用了错误的值
  3. 请参阅http://www.jsfiddle.net/vDFpZ/

    <html>
    <body>
    <form name="form1">
    <select name="select1">
    <option value="p1">p1</option>
    <option value="p2">p2</option>
    </select>
    </form>
    
    
    <script type="text/javascript">
        window.onload = function () {
            document.getElementsByName("select1")[0].onchange = function () {
                var sel = this.options[this.selectedIndex];
                var text = sel.text;
                var val = sel.value;
    
                switch (val)
                {
                  case 'p1': window.location = 'http://www.yahoo.com'
                            break;
                  case 'p2': window.location = 'http://www.google..com'
                            break;
                }
            }
        }
    </script>
    <p>Set the variable to different value and then try...</p>
    </body>
    </html>​