私は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 = "";
};
要素を追加するときReturnキーを押すことで問題はありません。しかし、[送信]ボタンをクリックすると、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
に注意してください。
必要に応じて、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("");
};
私の場合、MDNによれば、element
の代わりにdocument
で使用していました。
Document.querySelector()やDocument.querySelectorAll()などの他の要素検索メソッドとは異なり、getElementById()はグローバルドキュメントオブジェクトのメソッドとしてのみ使用でき、DOMのすべての要素オブジェクトのメソッドとしては使用できません。 ID値はドキュメント全体で一意である必要があるため、関数の「ローカル」バージョンは不要です。
他の投稿でわかるように、これにはいくつかの問題がありますが、このエラーが発生する理由は、フォームに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;
}