获取getElementById是未定义的

时间:2011-11-10 18:44:04

标签: javascript html

这是我的代码:

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

6 个答案:

答案 0 :(得分:3)

getElementByIddocument

的函数
var tr = document.getElementById("nameUpdate")

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

答案 1 :(得分:1)

它是document.getElementById(),而不是getElementsById(),因为它只返回一个元素。

后者不会非常有用,因为id属性在HTML文档中必须是唯一的。

答案 2 :(得分:1)

问题1:您正在呼叫getElementsById。 ID是唯一的:函数是getElementById。否s

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

var tr = document.getElementById(nameUpdate)

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

答案 3 :(得分:1)

也可以尝试更改:

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

到此:

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

function datechange() {

到这个

function datechange(nameUpdate) {

更有意义

答案 4 :(得分:0)

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

答案 5 :(得分:0)

它不起作用的原因是var将变量定义为它定义的函数,因此它不能在分配给onclick处理程序的匿名函数之外读取。

在更一般的“错误”术语中,传递关于使用全局变量的数据通常是一个坏主意。

将其作为参数传递。

function datechange(nameUpdate) {

datechange('TL-D03');