Javascript 为什么不';t';这';关键字在使用参数的事件处理程序函数上工作? var x=document.getElementById('id'); x、 addEventListener('单击',函数()){ 检查(x,5); },假); 功能检查(x,长度){ var msg=document.getElementById('id'); 如果(this.value.length

Javascript 为什么不';t';这';关键字在使用参数的事件处理程序函数上工作? var x=document.getElementById('id'); x、 addEventListener('单击',函数()){ 检查(x,5); },假); 功能检查(x,长度){ var msg=document.getElementById('id'); 如果(this.value.length,javascript,this,dom-events,Javascript,This,Dom Events,if(x.value.length

if(x.value.length
。我不完全理解如何实现
this
关键字。

内部检查将指向
窗口。您必须通过将
绑定到函数
中来检查
,以完成任务

var x = document.getElementById('id');
x.addEventListener('click', function() {
  check(x, 5);
}, false);

function check(x, length) {
  var msg = document.getElementById('ids');
  if (this.value.length < length) { //doesn't work
    msg.innerHTML = 'not long enough'
  }
}

内部检查将指向
窗口
。您必须通过将
绑定到函数
中来检查
,以完成任务

var x = document.getElementById('id');
x.addEventListener('click', function() {
  check(x, 5);
}, false);

function check(x, length) {
  var msg = document.getElementById('ids');
  if (this.value.length < length) { //doesn't work
    msg.innerHTML = 'not long enough'
  }
}

除非
检查
功能代码处于严格模式,否则在这种情况下
将是
未定义的
@AlexanderO'Mara您所说的
检查
内部的
。对吗?是的,没错。这将不是
窗口
,而是
未定义
-在严格模式中是的,我指的是
检查
功能。除非
检查
功能代码处于严格模式,在这种情况下
将是
未定义的
@AlexanderO'Mara您指的是
检查
内部的
。对吗?是的,没错。这将不是
窗口
,而是
未定义
-在严格意义上,我指的是
检查
函数。
仅在作为事件处理程序的函数中“起作用”,在您的案例中是匿名函数,而不是
检查
仅在作为事件处理程序的函数中“起作用”,在您的案例中是匿名函数,不
检查