开发者问题收集

获取 getElementById 未定义

2011-11-10
15115

这是我的代码:

<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 未定义。

3个回答

getElementByIddocument 的一个函数:

var tr = document.getElementById("nameUpdate")

MDN : https://developer.mozilla.org/en/DOM/document.getElementById

James Hill
2011-11-10

问题 1:您正在调用 getElementsById 。ID 是唯一的:函数是 getElementById 。没有 s

问题 2: getElementById 不是全局函数。您需要在文档对象上调用它:

var tr = document.getElementById(nameUpdate)

毕竟,您的脚本可以引用多个文档(例如,使用 iframe ),因此您需要明确说明您期望元素的位置。

lonesomeday
2011-11-10

还请尝试将:

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

更改为:

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

并将

function datechange() {

更改为

function datechange(nameUpdate) {

更有意义

Dimitri
2011-11-10