此外,打印选项内容的警报功能,vDaeId,dgpId没有执行(我没有在浏览器中看到弹出窗口)。
这告诉我们代码因抛出异常而失败。我的猜测是,您至少没有一个您所依赖的元素(D1
、、D2
或dgpids
)。所以document.getElementById
返回null
,当你尝试访问.value
它时,你会得到一个异常。
请注意,您使用的字符串getElementById
必须是id
值,而不是name
s。所以你必须id="D1"
在一个元素上,id="D2"
在另一个元素上,在另一个元素id="dgpids"
上。另请注意,id
值可以区分大小写,并且它们在页面上必须是唯一的。(如果您弄乱了最后一条规则,大多数浏览器都会按文档顺序为您提供第一个,但是...)
我假设您在goToPMDisplayer
页面完全加载之前不会调用它,但是如果您在页面加载期间调用它,请确保在元素存在之后才调用它(例如,将调用放在文档比元素)。
对于这样的问题,alert
-style 调试在几年前就消失了。在 2012 年,我们使用适当的调试器。如今,所有主流浏览器都内置了一个,甚至 IE。您可以设置断点、遍历代码、检查 DOM 的当前状态……总之,无需在黑暗中摸索;您可以了解正在发生的事情。
在对该问题的评论中,您说过
我验证了所有元素都存在。
恕我直言,我只是不明白这是怎么回事。我怀疑这些id
值略有不同,或者它们根本没有id
值,而是它们有name
值。
这是一个完整的工作示例:Live copy | 来源
<!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>