Получение getElementById не определено

#javascript #html

#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   "amp;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 не определен.

Комментарии:

1. зачем вам это делать var nameUpdate = 'TL-D03'; datechange(); ? Передайте его в качестве аргумента функции!

Ответ №1:

getElementById является функцией document :

 var tr = document.getElementById("nameUpdate")
  

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

Комментарии:

1. Это сработало, но теперь он говорит, что nameUpdate не определен! Oy vey!

2. nameUpdate должно быть в кавычках — это строка, а не переменная.

Ответ №2:

Проблема 1: вы вызываете getElementsById . Идентификаторы уникальны: функция является getElementById . Нет s .

Проблема 2: getElementById не является глобальной функцией. Вам нужно вызвать его для объекта document:

 var tr = document.getElementById(nameUpdate)
  

В конце концов, ваш скрипт может ссылаться более чем на один документ (например, с помощью iframe ), поэтому вам нужно четко указать, где, по вашему мнению, должен находиться элемент.

Ответ №3:

Также попробуйте изменить:

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

к этому:

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

и

 function datechange() {
  

к этому

 function datechange(nameUpdate) {
  

придает больше смысла

Ответ №4:

Это document.getElementById() , не getElementsById() так как возвращает только один элемент.

Последнее было бы не очень полезно, поскольку id атрибуты должны быть уникальными в HTML-документе.

Ответ №5:

вам нужно использовать document.getElementById("yourelementid")

Ответ №6:

Причина, по которой это не работает, заключается в том, что var привязывает переменную к функции, в которой она определена, поэтому она не читается вне анонимной функции, назначенной обработчику onclick.

В более общих терминах «неправильности» передача данных об использовании глобальных переменных, как правило, является плохой идеей.

Передайте его в качестве аргумента вместо этого.

 function datechange(nameUpdate) {
  

и

 datechange('TL-D03');
  

Комментарии:

1. Хм, теперь это говорит мне, что tr равно нулю.