日期:2014-05-16  浏览次数:20429 次

关于 event 对象的属性问题
问题都已描述到下面的 代码中:为什么这里设置 event.data 后,属性有效。而 fnTest 函数中,设置了属性 ret是 undefined?
另外,为什么设置的 数组类型的属性后,event.data 的类型发生改变了呢?


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>

<BODY>

<input type='button' value='Test' onclick='fnTest()'><br/>

<input type='button' value='Test2' onclick='fnTest2()'>
<script>
function fnTest()
{
alert(event.srcElement.value);
var arr = new Array("abc","bdd");
event.ret = {name:'abc'};
alert(event.ret);
event.data = arr;
alert( typeof event.data); // 数据类型也变了呢?
// 为什么数组的长度变成 7了呢?
alert(event.data.length);
}

function fnTest2()
{
// 为什么这里设置 event.data 后,属性有效。而 fnTest 函数中,设置了属性 ret是 undefined?
event.data =1;
alert(event.data);
}

</script>
</BODY>
</HTML>


------解决方案--------------------
<input type='button' value='Test' onclick='fnTest(event)'>
<script type="text/javascript">
function fnTest(e){
    var obj=e.target
------解决方案--------------------
e.srcElement;
    obj.ret = {name:'abc'};
    alert(obj.ret.name);
    var arr = new Array("abc","bdd");
    obj.data = arr;
    alert(obj.data.length)
}
</script>

------解决方案--------------------
没问题 chrome下。

怎么event也可以写,我以前还以为event是只读的,
------解决方案--------------------
测试了下,ie8 data属性能存储字符内容,其他自定义的属性好像存储不了,都是undefined


alert(event.data.length);输出7是应为data存储的是字符串abc,bdd,长度为7