我有以下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
}
答案 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内容的警报功能未执行(我在浏览器中看不到弹出窗口)。
这告诉我们代码因抛出异常而失败。我的猜测是你没有至少一个你所依赖的元素(D1
,D2
或dgpids
)。因此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>