新手的代码不起作用

时间:2011-12-13 12:19:50

标签: javascript

我最近开始学习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);
        }
    }
}

5 个答案:

答案 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)

  1. loadPlaylist函数不存在。
  2. 在handleKeyPress()中,未定义textinput
  3. handleButtonClick应该作为handleButtonClick();
  4. 调用

    我建议您一次检查每个功能,而不是整个代码。

    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