当我试图理解html / JavaScript / vue时,我遇到了以下代码片段。
<input type="text" onInput="doAction(event);">
<script>
var mesdata = {
message: 'type your message'
};
var app = new Vue ({
el: '#app',
data: mesdata
})
function doAction(content){
mesdata.message = content.target.value;
}
</script>
我也看到了以下取得了同样的结果
<input type="text" onInput="doAction(this);">
<script>
... same as above ...
function doAction(content){
mesdata.message = content.value;
}
</script>
当我使用content.type
时,我发现我正在传递输入类型和文本类型。
我能理解this
的用法,但想知道event
从何而来。当我搜索w3 school definition of onInput event时,我没有看到任何可以通过的参数。关于每个事件参数的定义,有什么好的参考资料?
还有,我可以采取什么样的预防措施来避免类型不匹配?
1条答案
按热度按时间91zkwejq1#
在定义内联事件处理程序
onInput="doAction(event);"
时,有两个已知变量:this
,触发事件的DOM元素event
,引用刚触发的事件的全局变量window.event
因此,当您使用参数
this
调用doAction
时,您可以通过应用value
来获取DOM元素的值。当参数为event
时,您需要首先获取触发事件的DOM元素,然后获取其值(target.value
)。这里有一个演示。请注意,不建议使用内联事件处理程序,而应使用事件处理程序(请参阅MDN:内联事件处理程序-不要使用这些)。还请注意,由于事件对象会自动传递给事件处理程序,因此不需要在
addEventListener
中指定它(请参见MDN:事件对象