Ответ 1
Это document.getElementById()
, а не document.getElementById()
. Проверьте корпус на Id
.
Я изучаю jQuery и слежу за учебником, очень странная ошибка озадачила меня. Вот мой html:
<!doctype html>
<html>
<head>
<title> Simple Task List </title>
<script src="jquery.js"></script>
<script src="task-list.js"></script>
</head>
<body>
<ul id="tasks">
</ul>
<input type="text" id="task-text" />
<input type="submit" id="add-task" />
</body>
</html>
и jQuery:
$(document).ready(function(){
//To add a task when the user hits the return key
$('#task-text').keydown(function(evt){
if(evt.keyCode == 13)
{
add_task(this, evt);
}
});
//To add a task when the user clicks on the submit button
$("#add-task").click(function(evt){
add_task(document.getElementByID("task-text"),evt);
});
});
function add_task(textBox, evt){
evt.preventDefault();
var taskText = textBox.value;
$("<li>").text(taskText).appendTo("#tasks");
textBox.value = "";
};
Когда я добавляю элементы. При нажатии клавиши возврата нет проблем. Но когда я нажимаю кнопку "Отправить", тогда firebug показывает эту ошибку
document.getElementByID is not a function
[Break On This Error] add_task(document.getElementByID("task-text"),evt);
task-list.js (line 11)
Я попытался использовать jQuery вместо замены
$("#task-text")
На этот раз ошибка:
$("<li>").text(taskText).appendTo is not a function
[Break On This Error] $("<li>").text(taskText).appendTo("#tasks");
task-list.js (line 18
which results in the following error
Я пытался отладить это некоторое время, но я просто не понимаю. Вероятно, это действительно глупая ошибка, которую я сделал. Любая помощь наиболее ценится.
Изменить: Я использую jQuery 1.6.1
Это document.getElementById()
, а не document.getElementById()
. Проверьте корпус на Id
.
Это getElementById()
Обратите внимание на нижний регистр d
в Id
.
Я изменил ваш script для работы с jQuery, если вы этого хотите.
$(document).ready(function(){
//To add a task when the user hits the return key
$('#task-text').keydown(function(evt){
if(evt.keyCode == 13)
{
add_task($(this), evt);
}
});
//To add a task when the user clicks on the submit button
$("#add-task").click(function(evt){
add_task($("#task-text"),evt);
});
});
function add_task(textBox, evt){
evt.preventDefault();
var taskText = textBox.val();
$("<li />").text(taskText).appendTo("#tasks");
textBox.val("");
};
В этом есть несколько ошибок, как вы можете видеть в других сообщениях, но причина, по которой вы получаете эту ошибку, состоит в том, что вы называете форму getElementById. Таким образом document.getElementById теперь указывает на вашу форму вместо метода по умолчанию, который предоставляет javascript. Смотрите мою скрипку для рабочей демонстрации https://jsfiddle.net/jemartin80/nhjehwqk/.
function checkValues()
{
var isFormValid, form_fname;
isFormValid = true;
form_fname = document.getElementById("fname");
if (form_fname.value === "")
{
isFormValid = false;
}
isFormValid || alert("I am indicating that there is something wrong with your input.")
return isFormValid;
}
В моем случае я использовал его для element
вместо document
, и в соответствии с MDN:
В отличие от некоторых других методов поиска элементов, таких как Document.querySelector() и Document.querySelectorAll(), getElementById() доступен только в качестве метода объекта глобального документа и недоступен в качестве метода для всех объектов элемента в DOM. Поскольку значения идентификаторов должны быть уникальными во всем документе, нет необходимости в "локальных" версиях функции.