我有点不解, 为什么下面alert出来的是undefined? this.value不是引用的document.getElementById("aa").value吗<html>
<head>
<script type="text/javascript"> function bb()
{
document.getElementById("aa").value= "change";
}
function aaa()
{
alert(" this.value=="+this.value) ;
} </script>
</head>
<body>
<input name="aa" type="hidden" value=" " onpropertychange="aaa()" /> <br> <input type="button" value="按钮" onclick="bb()" ID=Button1/><br>
</body>
</html>
<head>
<script type="text/javascript"> function bb()
{
document.getElementById("aa").value= "change";
}
function aaa()
{
alert(" this.value=="+this.value) ;
} </script>
</head>
<body>
<input name="aa" type="hidden" value=" " onpropertychange="aaa()" /> <br> <input type="button" value="按钮" onclick="bb()" ID=Button1/><br>
</body>
</html>
当一个对象的某个事情被触发 则 执行该事件绑定的方法 事件机制 如果没有用这个对象本身作为绑定方法的外部调用域 则 这个方法里面的 this肯定不是 该对象
事件机制可能这样
var observer={
onchange:[]
,addchangelistener:function(callback){onchange[onchange.length]=callback;}
,firechange:function(){for(var i=0;i<this.onchange;i++){var func=this.onchage[i];func();}}
}
上面 func()执行的外部区域肯定不是 oberver
function aaa(obj)
{
alert(" this.value=="+obj.value) ;
}对某个标签操作,在js中是要传值的,否则this不知道是谁,这个和jquery有区别的,jquery的this是指当前的操作对象
<head>
<script type="text/javascript"> function bb()
{
document.getElementById("aa").value= "change";
}
function aaa()
{
alert(" this.value=="+this.value) ;
} </script>
</head>
<body>
<input name="aa" type="hidden" value=" " onpropertychange="aaa(this);" /> <br> <input type="button" value="按钮" onclick="bb()" ID=Button1/><br>
</body>
</html>
看到红色部分没有, aaa(this)代表传入当前对象,
由于你上面没有定义this,所以默认的this代表当前的window,所以得到的是undifine
<head>
<script type="text/javascript"> function bb()
{
document.getElementById("aa").value= "change";
}
function aaa(e)
{
alert(" this.value=="+e.value) ;
} </script>
</head>
<body>
<input name="aa" type="text" value="11111" onclick="aaa(this);" /> <br> <input type="button" value="按钮" onclick="bb()" ID=Button1/><br>
</body>
</html> 你可以用这个测试
http://iamduyu.cn/?p=708