I’m learning jQuery and was following a tutorial, a very strange error has perplexed me.
Here’s my 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>
and The 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 = "";
};
When I add elements By hitting the return key, there’s no problem.
But When I click the Submit Button then firebug shows this error
document.getElementByID is not a function
[Break On This Error] add_task(document.getElementByID("task-text"),evt);
task-list.js (line 11)
I tried to use jQuery instead replacing it with
$("#task-text")
This time the error is :
$("<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
I’ve been trying to debug this for some time but i just don’t get it. Its probably a really silly mistake that i’ve made. Any help is most appreciated.
Edit :
I’m using jQuery 1.6.1
Сообщение
TypeError: "x" is not a function
Тип ошибки
Что пошло не так?
Была сделана попытка вызвать значение как функцию, но оно на самом деле не является функцией. Некоторый код ожидает, что вы предоставите функцию, но этого не происходит.
Возможно, есть ошибка в имени функции? Возможно, объект, метод которого вы вызываете, не содержит в себе этой функции? Для примера, JavaScript объекты не имеют map функции, а JavaScript Array — имеют.
Есть множество функций, нуждающихся в колбэк-функциях. Вы должны будете предоставить колбэк-функцию для того, чтобы эти методы работы правильно:
- Когда работаете с
ArrayилиTypedArrayобъектами:Array.prototype.every(),Array.prototype.some(),Array.prototype.forEach(),Array.prototype.map(),Array.prototype.filter(),Array.prototype.reduce(),Array.prototype.reduceRight(),Array.prototype.find()
- Когда работаете с
Map(en-US) иSetобъектами:Map.prototype.forEach()(en-US) иSet.prototype.forEach()
Примеры
Ошибки в имени функции
В данном случае, случающемся очень часто, есть опечатка в имени метода:
var x = document.getElementByID("foo");
// TypeError: document.getElementByID is not a function
Корректное имя функции — getElementById:
var x = document.getElementById("foo");
Функция вызвана с неверным объектом
Для некоторых методов вы должны предоставить колбэк-функцию, и она будет работать только на корректных объектах. В этом примере используется Array.prototype.map(), в котором Array будет работать только с массивами.
var obj = { a: 13, b: 37, c: 42 };
obj.map(function(num) {
return num * 2;
});
// TypeError: obj.map is not a function
Использование с массивом:
var numbers = [1, 4, 9];
numbers.map(function(num) {
return num * 2;
});
// Array [ 2, 8, 18 ]
Смотрите также
|
30 / 47 / 19 Регистрация: 23.10.2014 Сообщений: 1,001 |
|
|
1 |
|
|
06.06.2016, 12:57. Показов 20150. Ответов 14
Скажите пожалуйста класс document встроенный или надо какие то библиотеки подключать? Почему у меня все время пишет ошибки типа «getElementById is not function» и т.п.???
__________________
0 |
|
Ренегат
1740 / 1085 / 386 Регистрация: 06.08.2014 Сообщений: 5,203 Записей в блоге: 1 |
|
|
06.06.2016, 13:14 |
2 |
|
Dark Byte, это встроенный объект языка, все библиотеки его используют вы лучше покажите код, который у вас выкидывает ошибки
0 |
|
105 / 93 / 50 Регистрация: 17.09.2015 Сообщений: 610 |
|
|
06.06.2016, 13:16 |
3 |
|
Ничего не надо подключать, вот пример.
0 |
|
Dark Byte 30 / 47 / 19 Регистрация: 23.10.2014 Сообщений: 1,001 |
||||
|
06.06.2016, 13:32 [ТС] |
4 |
|||
|
Код такой:
0 |
|
супермизантроп
3931 / 2970 / 690 Регистрация: 18.04.2012 Сообщений: 8,622 |
|
|
06.06.2016, 13:42 |
5 |
|
document — это, во-первых, объект, а никак не
во-вторых, ошибка, которую показывает вам консоль, трактуется однозначно — элемент, к которому вы обратились по его идентификатору, ещё не «прочитан» парсером браузера
0 |
|
30 / 47 / 19 Регистрация: 23.10.2014 Сообщений: 1,001 |
|
|
06.06.2016, 14:08 [ТС] |
6 |
|
ошибка, которую показывает вам консоль, трактуется однозначно — элемент, к которому вы обратились по его идентификатору, ещё не «прочитан» парсером браузера Если бы это было так то он бы так и писал наверное? Он пишет то совсем другую ошибку!
0 |
|
kalabuni супермизантроп
3931 / 2970 / 690 Регистрация: 18.04.2012 Сообщений: 8,622 |
||||
|
06.06.2016, 14:30 |
7 |
|||
|
Если бы это было так то он бы так и писал наверное? Он пишет то совсем другую ошибку! так он именно это и пишет, проверьте
0 |
|
30 / 47 / 19 Регистрация: 23.10.2014 Сообщений: 1,001 |
|
|
06.06.2016, 14:51 [ТС] |
8 |
|
«getElementById is not function 1. пикаем google translate
0 |
|
Хитрая блондиночка $) 1470 / 985 / 399 Регистрация: 21.12.2015 Сообщений: 3,785 |
|
|
06.06.2016, 15:04 |
9 |
|
«getElementById is not function» и т.п.? Может в этом слове есть кириллица? Такое бывает, и очень сложно отличить «е» от «e», хотя для компьютера это не одно и то же.
1 |
|
Dark Byte 30 / 47 / 19 Регистрация: 23.10.2014 Сообщений: 1,001 |
||||||||||||
|
06.06.2016, 16:00 [ТС] |
10 |
|||||||||||
|
Может в этом слове есть кириллица? Такое бывает, и очень сложно отличить «е» от «e», хотя для компьютера это не одно и то же. Разумеется нет, что я дебил чтоли писать на английской раскладке, а потом переключиться на русскую специально чтобы поставить ‘e’ на ней и обратно. Добавлено через 7 минут
Добавлено через 36 минут
0 |
|
супермизантроп
3931 / 2970 / 690 Регистрация: 18.04.2012 Сообщений: 8,622 |
|
|
06.06.2016, 16:25 |
11 |
|
пропишите в классе .game-block правило overflow: hidden, ибо 10 пикселей высоты — это маловато будет
0 |
|
30 / 47 / 19 Регистрация: 23.10.2014 Сообщений: 1,001 |
|
|
06.06.2016, 16:31 [ТС] |
12 |
|
пропишите в классе .game-block правило overflow: hidden, ибо 10 пикселей высоты — это маловато будет А причем тут это? Я же говорю моргает на долю секунды. Их видно. Но они сразу пропадают. Это не то маленький размер. Тут в чем то другом дело.
0 |
|
Михаил_96 20 / 20 / 13 Регистрация: 22.11.2015 Сообщений: 109 |
||||||||
|
06.06.2016, 18:13 |
13 |
|||||||
|
Решение
Синтаксис выучил, но с html через него не работал.
Вот это все правильно по синтаксу, но вовсе неправильно по логике, более того — это просто дебильный код. Поэтому, когда пишете, что вы выучили синтаксис того или иного языка, то это ничего не означает. А на работах за это еще увольняют)) По теме
Тег формы тут не нужен, ибо он создан для отправлений сообщений на сервер
1 |
|
30 / 47 / 19 Регистрация: 23.10.2014 Сообщений: 1,001 |
|
|
06.06.2016, 18:34 [ТС] |
14 |
|
Вот это все правильно по синтаксу, но вовсе неправильно по логике, более того — это просто дебильный код. Поэтому, когда пишете, что вы выучили синтаксис того или иного языка, то это ничего не означает. А на работах за это еще увольняют)) В коде нефига не понял. В основном из-за полного отсутствия форматирования. При чем это тут вообще? Я вообще то на работу с js связанную пока и не устраиваюсь. Чего вы все до меня докопались?
По теме Не понял. А в чем разница? Разве у меня не то же самое написано?
Тег формы тут не нужен, ибо он создан для отправлений сообщений на сервер О кажется и правда в этом была проблема! Просто я читал что button может использоваться только на форме… Не знал что можно и отдельно.
0 |
|
20 / 20 / 13 Регистрация: 22.11.2015 Сообщений: 109 |
|
|
06.06.2016, 20:45 |
15 |
|
В коде нефига не понял. В основном из-за полного отсутствия форматирования. При чем это тут вообще? Я вообще то на работу с js связанную пока и не устраиваюсь. Чего вы все до меня докопались? Ладно, простите мою бестактность, я не хотел докапываться до вас)
1 |

Сообщение было отмечено Dark Byte как решение
