#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 равно нулю.