我开始学习javascript,我实现了这一小段代码。我花了很长时间尝试运行浏览器,直到意识到问题出在调用带或不带括号的函数,注意注释行。
var buttonElement = document.querySelector('#app button');
var tarefaDigitada = document.querySelector('#app input');
var listElement = document.querySelector('#app ul');
var todos = ['Cofee', 'Beer', 'Water'];
function renderTodos() {
listElement.innerHTML = '';
for (todo of todos) {
var todoElement = document.createElement('li');
var todoText = document.createTextNode(todo);
todoElement.appendChild(todoText);
listElement.appendChild(todoElement);
}
}
function addTodo() {
var text = tarefaDigitada.value;
console.log(tarefaDigitada.value);
todos.push(text);
tarefaDigitada.value = '';
renderTodos();//No parentheses doesn't work
}
renderTodos();
buttonElement.onclick = addTodo;//With parentheses does not work
即使没有参数,也必须加上括号吗?为什么在调用onclick时我不能放?
答案 0 :(得分:1)
当您要在该行本身中调用函数时,请加上括号,而在另一种情况下,您要告诉JS在每次单击按钮不正确时都在内部调用该函数。
答案 1 :(得分:1)
围绕SO一定存在这个问题的虚假之处。当您执行onclick = addTodo()
时,您将调用该函数并将onclick
设置为该函数返回的值。你不想要那个您想将onclick
设置为函数本身,因此不要使用括号。