Moreover, the alert function that prints the content of option, vDaeId, dgpId does not executed (I dont see a pop up in the browser).
这告诉我们,代码是通过抛出一个异常失败。我的猜测是,你至少没有一个你所依靠的元素(D1
,D2
或dgpids
)。因此document.getElementById
返回null
,并且当您尝试访问.value
时,您会得到一个异常。这些字符串你getElementById
使用
注意必须id
值,而不是name
秒。所以你必须在一个元素上有id="D1"
,在另一个元素上有id="D2"
,在另一个元素上有id="dgpids"
。另请注意,id
值可区分大小写,并且它们必须在页面上是唯一的。 (如果你弄错了最后一条规则,大多数浏览器会按照文档顺序给你第一个,但是...)
我假设你不打电话goToPMDisplayer
,直到页面完全加载,但如果你在页面加载期间调用它,确保直到元素存在之后才调用它(例如,在文档中将元素的调用放在元素的下方)。
对于这样的问题,alert
风格的调试几年前就出去了。在2012年,我们使用适当的调试器。现在有一种内置于所有主流浏览器的产品,甚至IE。你可以设置断点,遍历代码,检查DOM的当前状态......总之,不需要在黑暗中摸索;你可以照亮发生的事情。
在关于这个问题的评论,你说
I verified that all ements exist.
恕我直言,我只是不明白怎么说都可以。我怀疑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>
有没有“;”s? – Sebas
@Sebas - Javascript中没有问题。 – Oded
如果'alert(str)'不起作用,那意味着你的'var'线之一出错了。我的猜测是那些不存在的元素之一。 –