2017-11-25 226 views
0

我決定在視頻之後重複執行JavaScript中的待辦事項列表,但視頻已經是2年了,所以可能會有一些屬性或其他內容發生更改,並且被定義爲真實我不知道。 這裏是HTML:event.target在函數中不起作用

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>To-Do list</title> 
    <link rel="stylesheet" href="main.css"> 
</head> 
<body> 
    <input type="text" id="input"> 
    <button id="btn">Add</button> 

    <hr> 

    <ul id="todo"> 

    </ul> 
    <ul id="done"> 

    </ul> 




    <script src="main.js"></script> 
</body> 
</html> 

這裏是JavaScript的:

(function() { 
    let input = document.getElementById('input'); 
    let btn = document.getElementById('btn'); 
    let lists = { 
     todo: document.getElementById('todo'), 
     done: document.getElementById('done') 
    }; 

    let makeTaskHtml = function(str, onCheck) { 
     let el = document.createElement('li'); 
     let checkbox = document.createElement('input'); 
     let label = document.createElement('span'); 

     checkbox.type = 'checkbox'; 
     checkbox.addEventListener('click', onCheck); 
     label.textContent = str; 

     el.appendChild(checkbox); 
     el.appendChild(label); 

     return el; 
    }; 


    let addTask = function(list, task) { 
     list.appendChild(task); 
    }; 

    let onCheck = function(event) { 
     let task = event.target; 

     console.log(task); 
    }; 

    addTask(lists.todo, makeTaskHtml('Test-todo')); 
    addTask(lists.done, makeTaskHtml('Test-done')); 


}()); 

在功能上的oncheck我試圖CONSOLE.LOG我在此函數定義之前,但什麼都沒有發生的任務:既沒有錯誤,也沒有結果,我預計看到 有什麼問題?可能是因爲event.target?或者addEventListener? 請幫我解釋一下。在此先感謝

回答

1

你發揮makeTaskHtml需要兩個參數:

function makeTaskHtml(str, onCheck) 

但是你只用一個調用它:

addTask(lists.todo, makeTaskHtml('Test-todo')); 

您需要onCheck通過作爲第二個參數或刪除函數聲明的第二個參數。

+0

非常感謝!它真的幫了大忙! –