我最近开始学习Javascript并编写我的第一段代码。这个应该捕获文本输入并将其添加到列表中,但由于某种原因它不起作用。
我已经看了半个小时,我看不出哪里出错了。你介意帮我一把吗?
window.onload = init;
function init() {
var textInput = document.getElementById("songTextInput");
textInput.onKeyPress = handleKeyPress;
var button = document.getElementById("addButton");
button.onclick = handleButtonClick;
loadPlaylist();
}
function handleKeyPress() {
if (textInput.keyCode == 13) {
handleButtonClick;
}
function handleButtonClick() {
var songName = textInput.value;
if (songName == "") {
alert("Please enter a song");
} else {
var textInput = document.getElementById("songTextInput");
var songName = textInput.value;
var li = document.createElement("li");
li.innerHTML = songName;
var ul = document.getElementById("playlist");
ul.appendChild(li);
save(songName);
}
}
}
答案 0 :(得分:1)
我可以看到的一个问题是你正在调用方法handleButtonClick错误:
if (textInput.keyCode == 13) {handleButtonClick;}
它应该是:
if (textInput.keyCode == 13) {handleButtonClick();}
<强>更新强>: 还有一些错误,这应该有效:
window.onload = init;
function init() {
var textInput = document.getElementById("songTextInput");
textInput.onKeyPress = handleKeyPress;
var button = document.getElementById("addButton");
button.onclick = handleButtonClick;
//loadPlaylist(); Dont have this code
}
function handleKeyPress() {
if (textInput.keyCode == 13) {
handleButtonClick;
}
}
function handleButtonClick() {
var textInput = document.getElementById("songTextInput"); //This moved up for songname
var songName = textInput.value;
if (songName == "") {
alert("Please enter a song");
} else {
var songName = textInput.value;
var li = document.createElement("li");
li.innerHTML = songName;
var ul = document.getElementById("playlist");
ul.appendChild(li);
//save(songName); Dont have this code
}
}
答案 1 :(得分:1)
使用此功能。您忘记使用}
window.onload = init;
function init() {
var textInput = document.getElementById("songTextInput");
textInput.onKeyPress = handleKeyPress;
var button = document.getElementById("addButton");
button.onclick = handleButtonClick;
loadPlaylist();}
function handleKeyPress(){
if (textInput.keyCode == 13) {handleButtonClick;}
}
function handleButtonClick() {
var songName = textInput.value;
if (songName == "") {alert("Please enter a song");}
else {
var textInput = document.getElementById("songTextInput");
var songName = textInput.value;
var li = document.createElement("li");
li.innerHTML = songName;
var ul = document.getElementById("playlist");
ul.appendChild(li);
save(songName);}}
今天之后,在提问之前使用你的控制台。
Mozilla:CTRL + SHIFT + K
IE:F12
Chrome:SHIFT + CTRL + I
答案 2 :(得分:1)
您正在函数init()中定义一个textInput变量,该变量对函数handleButtonClick()中使用但未声明的相同命名变量是完全无法访问的。
答案 3 :(得分:1)
您需要将handleButtonClick移动到外部范围,并调用handleButtonClick()
。
function handleButtonClick() {
var songName = textInput.value;
if (songName == "") {
alert("Please enter a song");
} else {
var textInput = document.getElementById("songTextInput");
var songName = textInput.value;
var li = document.createElement("li");
li.innerHTML = songName;
var ul = document.getElementById("playlist");
ul.appendChild(li);
save(songName);
}
}
function handleKeyPress() {
if (textInput.keyCode == 13) {
handleButtonClick();
}
}
答案 4 :(得分:1)
我建议您一次检查每个功能,而不是整个代码。
http://jsfiddle.net/gbsandeep/QbH4u/
代码清理小提琴的建议 错误: 第9行第24个问题:&#39; handleKeyPress&#39;在定义之前使用过。 function handleKeyPress(){ 第11行的问题字符9:预期分配或函数调用,而是看到一个表达式。 handleButtonClick; 第14行第31个问题:&#39; handleButtonClick&#39;在定义之前使用过。 function handleButtonClick(){ 第16行问题第22条:使用&#39; ===&#39;与&#39;进行比较。 if(songName ==&#34;&#34;){ 第19行字符27的问题:&#39; textInput&#39;在定义之前使用过。 var textInput = document.getElementById(&#34; songTextInput&#34;); 第20行第26个问题:&#39; songName&#39;已定义。 var songName = textInput.value; 隐含全局:handleButtonClick 5,11,loadPlaylist 6,textInput 10,15,alert 17,save 25 未使用的变量:handleButtonClick 9 handleKeyPress