我正在刷我的JS,我完全不知道如何问这个问题。
我有这个:
text_area.onkeyup = function() {
var text_length = this.value.length;
var text_remaining = text_max - text_length;
feed_back.innerHTML = "<strong>" + text_remaining + "</strong> charactres remaining";
}
有效。但是,我是否应该能够使用该功能并将其拉出来?
function countDown() {
var text_length = this.value.length;
var text_remaining = text_max - text_length;
feed_back.innerHTML = "<strong>" + text_remaining + "</strong> charactres remaining";
}
只是按名称调用函数?
text_area.onkeyup = countDown();
在多个项目中,从不为我工作。
应该吗?为什么不呢?
答案 0 :(得分:4)
你必须使用:
text_area.onkeyup = countDown;
没有括号。
countDown
是对实际函数对象countDown
的引用。它只是一个引用,不会调用或执行该函数。
countDown()
实际上调用函数,并计算它返回的内容。
答案 1 :(得分:3)
它不起作用,因为()
实际上调用了函数 - 有效地将text_area.onkeyup
设置为countDown
的返回值而不是函数本身。
请改为尝试:
text_area.onkeyup = countDown;
答案 2 :(得分:2)
它不应该因为您分配函数调用的结果而不是函数引用。应该是:
text_area.onkeyup = countDown;
答案 3 :(得分:2)
问题是您在赋值期间执行了该函数,因此函数的返回值将附加到事件中。相反,你应该附上一个参考:
text_area.onkeyup = countDown
或者,如果倒计时具有您想要传递的参数,那么您可以使用function
来确保它们不会丢失。像这样:
text_area.onkeyup = function(){ countDown(paremeter1, paremeter2); }