这是我的代码:
<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 :(得分:3)
getElementById
是document
:
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');