window.location.href不起作用

时间:2012-05-16 14:08:02

标签: javascript

我有以下java脚本函数,我想将页面重定向到另一个页面。我确认警报功能显示“已收到”消息。因此,该函数被正确调用。但是,使用window.location.href进行页面重定向不起作用。此外,打印选项vDaeId,dgpId的内容的警报功能未执行(我在浏览器中看不到弹出窗口)。你能告诉我这段代码有什么问题吗?谢谢。我正在使用firefox btw。

        function goToPMDisplayer(){
            alert('Got '); 
            var option=document.getElementById("D1").value;
            var vDaeId=document.getElementById("D2").value;
            var dgpId=document.getElementById("dgpids").value;
            var str= option + " "+ vDaeId + " "+ dgpId
            alert(str); 
            window.location.href="display.jsp?option="+option + "&vdaeid=" + vDaeId + "&dgpid=" + dgpId

        }

2 个答案:

答案 0 :(得分:5)

你说第一个警报有效,而第二个没有,这意味着其中一个行有一个javascript错误:

var option=document.getElementById("D1").value;
var vDaeId=document.getElementById("D2").value;
var dgpId=document.getElementById("dgpids").value;

最可能的罪魁祸首是其中一个元素不存在,并且尝试访问.value的{​​{1}}会引发异常。

答案 1 :(得分:3)

  

此外,打印选项vDaeId,dgpId内容的警报功能未执行(我在浏览器中看不到弹出窗口)。

这告诉我们代码因抛出异常而失败。我的猜测是你没有至少一个你所依赖的元素(D1D2dgpids)。因此document.getElementById会返回null,当您尝试访问.value时,会出现例外情况。

请注意,您与getElementById一起使用的字符串必须是 id 值,而不是name s。因此,您必须在一个元素上id="D1",在另一个元素上id="D2",在另一个元素上id="dgpids"。另请注意,id值可能区分大小写,并且必须在页面上是唯一的。 (如果你弄乱了最后一条规则,大多数浏览器会按文档顺序给你第一个,但是......)

我假设您在页面完全加载之前没有调用goToPMDisplayer,但如果您在页面加载期间调用它,请确保在元素存在之后才调用它(例如,将调用放在文档中比元素更低。


对于像这样的问题,alert - 样式调试几年前就出现了。在2012年,我们使用适当的调试器。现在所有主流浏览器都内置了一个,甚至是IE浏览器。你可以设置断点,遍历代码,检查DOM的当前状态......总之,不需要在黑暗中摸索;你可以发现正在发生的事情。


在对这个问题的评论中,你说过

  

我确认所有的事情都存在。

得到应有的尊重,我只是看不出那是怎么回事。我怀疑id值略有不同,或者根本没有id值,但它们的值为name

这是一个完整的,有效的例子:Live copy | source

<!DOCTYPE html>
<html>
<head>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>Test Page</title>
<style>
  body {
    font-family: sans-serif;
  }
</style>
</head>
<body>
  <input id="D1" value="valueOfD1">
  <input id="D2" value="valueOfD2">
  <input id="dgpids" value="valueOfdgpids">
  <br><input id="theButton" type="button" value="Click Me">
  <script>
  function goToPMDisplayer(){
      alert('Got '); 
      var option=document.getElementById("D1").value;
      var vDaeId=document.getElementById("D2").value;
      var dgpId=document.getElementById("dgpids").value;
      var str= option + " "+ vDaeId + " "+ dgpId
      alert(str); 
      var loc = "display.jsp?option="+option + "&vdaeid=" + vDaeId + "&dgpid=" + dgpId
      alert("loc = " + loc);

  }
  document.getElementById("theButton").onclick = goToPMDisplayer;
  </script>
</body>
</html>