2011-11-10 49 views
1

這裏是我的代碼:獲取的getElementById是不確定的

<html> 
<header> 
<title>Checkup Date</title> 
<script type="text/javascript"> 
function datechange() { 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject 

("Microsoft.XMLHTTP"); 

    } 

var tr = getElementsById(nameUpdate) 
var tds = tr.getElementsByTagName('td'); 
var user = ""; 
var date = ""; 
for(var i = 0, len = tds.length; i < len; ++i) { 
    user = tds[0]; 
    date = tds[3]; 
} 


var url = "changedate.psp" 
var params = "user=" + user + "&date=" + date; 

xmlhttp.open("GET", url + "?" + params, true); 
xmlhttp.send(); 
xmlDoc=xmlhttp.responseXML; 

} 

</script> 
</header> 

<body> 

<% 
Python that doesn't matter 
%> 

<%= More Python %> 

</body> 
</html> 

我的輸出HTML:

<tr id="TL-D03"> 
<td>nobody</td> 
<td>TL-D03</td> 
<td>2010-01-01</td> 
<td> 
<input type="checkbox" onclick="var nameUpdate = 'TL-D03'; datechange();"> 

我在做什麼錯在這裏?它說getElementById是未定義的。

+0

你爲什麼會做'無功nameUpdate = 'TL-D03'; datechange();'?將它作爲參數傳遞給函數! – epascarello

回答

3

getElementByIddocument功能:

var tr = document.getElementById("nameUpdate") 

MDNhttps://developer.mozilla.org/en/DOM/document.getElementById

+0

這工作,但現在它說nameUpdate沒有定義! OY合租! –

+1

'nameUpdate'應該在引號中 - 它是一個字符串,而不是一個變量。 –

0

你需要使用document.getElementById("yourelementid")

1

document.getElementById(),不getElementsById(),因爲它只返回一個元素。

後者不會很有用,因爲id屬性在HTML文檔中必須是唯一的。

1

問題1:您打電話給getElementsById。 ID是唯一的:該功能是getElementById。否s

問題2:getElementById不是全局函數。你需要調用它的文檔對象上:

var tr = document.getElementById(nameUpdate) 

畢竟,你的腳本可以參考一個以上的文件(例如,與iframe),所以你需要明確的關於您所期望的元素是。

1

也嘗試改變:

<input type="checkbox" onclick="var nameUpdate = 'TL-D03'; datechange();"> 

這樣:

<input type="checkbox" onclick="datechange('TL-D03')"> 

function datechange() { 

這個

function datechange(nameUpdate) { 

使更多的認識

0

它不起作用的原因是,var作用於它定義的函數的變量,所以它是分配給onclick處理程序的匿名函數之外不可讀。

在更籠統的「錯誤」術語中,傳遞有關使用全局變量的數據通常是一個壞主意。

將其作爲參數傳遞。

function datechange(nameUpdate) { 

datechange('TL-D03'); 
+0

Hrm,現在它告訴我tr是空的。 –