我只在eventhandle()在主体加载后产生输出后触发事件(聚焦输入元素)。注释是事件触发调用eventhandle时生成的输出。
<input type="text" value="xyz" ></input>
<script>
eventhandle();
document.getElementsByTagName("input")[0].onclick=eventhandle
function eventhandle()
{
alert(this.value);//works
alert(event); //works
alert(event.type)//Error for all the properties of event object
}
</script>
如果我在DOM上触发事件后调用eventhandle(),即
,则会解决此问题<input type="text" value="xyz" ></input>
<script>
document.getElementsByTagName("input")[0].onclick=eventhandle
function eventhandle()
{
alert(this.value);
alert(event.type); //works for all properties of event object
alert(event) //works
}
eventhandle();
</script>
我无法理解错误发生的原因以及解决方法
答案 0 :(得分:1)
首先,我不知道为什么你这样称为事件句柄,我的意思是eventhandle()
?事件句柄不是直接调用,它将在事件触发后调用。
其次,您收到错误,因为调用eventhandle函数时,您的页面未完全加载。你应该首先使用window.onload = your_handler
答案 1 :(得分:1)
我无法理解错误发生的原因
当您手动调用eventhandle()
时,未触发任何事件,因此全局event
变量没有值。
以及如何解决
正如您在此处所见,将调用置于代码末尾,实际上并未解决错误:http://jsfiddle.net/M7rXK/。问题仍然存在。
答案 2 :(得分:1)
好的,这是我的代码:
<input type="text" value="xyz" ></input>
<script>
// eventhandle(); I hate this, verymuch =="
document.getElementsByTagName("input")[0].onclick=eventhandle
function eventhandle(event) // please parse a parameter represent the event here
{
alert(this.value);//works
alert(event); //works
alert(event.type)// If works, plz tell me :D
}
</script>
答案 3 :(得分:1)
Firefox中不会退出事件。以下代码应该适用于大多数浏览器:
document.getElementsByTagName("input")[0].onclick=eventhandle
function eventhandle(e)
{
var event = e || window.event;
console.log(this.value); // works
console.log(event.type); //works for all properties of event object
console.log(event) //works
}
// trigger the click event without actually clicking on it
document.getElementsByTagName("input")[0].click();
在IE中你必须按F12打开开发人员工具才能看到console.log,否则会产生错误。在大多数其他浏览器中,您还必须按F12打开控制台并查看控制台消息,但如果它未打开则不会生成错误。