2010-09-10 55 views
2

好的,我正在尝试将switch语句重定向到另一个页面,具体取决于在选择框中选择了哪个选项。以下是我正在努力并试图弄清楚的一个示例,任何帮助都将大大降低。带重定向的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

问题是? – mkoryak 2010-09-10 18:36:27

回答

1
  1. 您需要绑定一个事件处理程序切换
  2. 你的交换机是使用错误值

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>​ 
+0

马特上面的例子似乎工作得很好,但我需要它链接到提交按钮,而不是在选择发生时加载。我是一个总的javascript newb,我承认我有很多阅读和练习可以做,但我需要这个方面来完成一个需要很快完成的项目。 – NewB 2010-09-10 19:12:47

5

我建议您避免使用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(不用担心,他们是100%,在所有的浏览器都支持),因为你需要的东西的价值属性其他。

+0

的事情是,我需要的值等于特定的东西,因为它被放入一个MySQL数据库,谢谢你。 – NewB 2010-09-10 18:47:08

+0

这可以通过将数据URL修改为'page.php?value = CONTENTS_OF_VALUE_FIELD_HERE'来通过一个GET变量 – 2010-09-10 18:55:34

+0

oops,也忘记提及点击提交按钮时需要进行更改 – NewB 2010-09-10 18:57:14

1

我注意到你并没有将更改处理程序绑定到select,所以当用户选择一个值时什么都不会发生。