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'線之一出錯了。我的猜測是那些不存在的元素之一。 –