window.location.href 不起作用

window.location.href does not work

本文关键字:不起作用 href location window      更新时间:2023-09-26

我有下面的java脚本函数,我想将页面重定向到另一个页面。我验证了警报功能显示"Got"消息。因此,可以正确调用该函数。但是,使用 window.location.href 的页面重定向不起作用。此外,打印选项,vDaeId,dgpId内容的警报功能没有执行(我在浏览器中没有看到弹出窗口(。你能告诉我这段代码有什么问题吗?谢谢。顺便说一句,我正在使用火狐

        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
        }

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

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

最有可能的罪魁祸首是这些元素之一不存在,尝试访问null .value将引发异常。

此外,打印选项,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值。

下面是一个完整的工作示例:实时复制 | 源

<!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>