对传递给函数的事件对象感到困惑

时间:2012-10-04 07:29:58

标签: javascript object javascript-events

   function jackpotKey(event)
   {
     var value = this.value;
     var key = event.keyCode;

     if (value.match(/^\d{3}$/) !== null && key !== 8)
     {
       this.value = value + ',';
     }
     else if((value.match(/^\d{3},\d{3}$/)) !== null && key!== 8)
     {
       this.value = value + ',';
     } 
    }

我对如何使用this.valueevent.keyCode来访问传递给函数的对象的属性感到困惑。

不是同一个对象的this.valueevent.keyCode吗?如果是这样,为什么event.valuethis.keyCode不起作用?

2 个答案:

答案 0 :(得分:1)

事件对象和this是两个不同的对象。 this将引用触发事件的DOMElement,事件对象 事件。假设我们有

<input type="text" id="foo" value="bar"/>
<script language="javascript" type="text/javascript">
    document.getElementById('foo').onkeyup = function(e)//event
    {
        console.log(e === this);//false
        console.log((e.target || e.srcElement) === this);//true
        console.log(e.value);//undefined
        console.log(this.keyCode);//undefined
        console.log(e);//;logs instance of KeyboardEvent
        console.log(this);//logs input node
    };
</script>

只需check this fiddle并查看您的控制台

答案 1 :(得分:0)

没有这个和事件不是同一个对象 例如,文本框是对象和事件,有人按键操作

-Textbox是指这个 和
- 按下的动作是指事件

这样:

- 与文本字段相关的参数,例如它的文本将在此对象中可用 和
- 与按下的键是可用事件对象

的操作相关的参数

=&gt;仔细查看此事件并阅读以下事件。如果你是新手,那么你必须阅读。

About This

About Event