我有点不解, 为什么下面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> 

解决方案 »

  1.   

    文本框怎么会用onpropertychange这个,这是下拉框用的吧?用onkeyup事件
      

  2.   

    this指的是当前执行函数的外部域 比如 b.a()  则 a中的this表示b 这样是显示附加了外部域 没有显示附加则 默认是js的跟域  window但是事件机制中
    当一个对象的某个事情被触发 则 执行该事件绑定的方法 事件机制 如果没有用这个对象本身作为绑定方法的外部调用域 则 这个方法里面的 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
      

  3.   

    应该是这样的<input id="aa" name="aa" type="hidden" value=" " onpropertychange="aaa(this)" /> <br>
    function aaa(obj)   

        alert(" this.value=="+obj.value) ;   
    }对某个标签操作,在js中是要传值的,否则this不知道是谁,这个和jquery有区别的,jquery的this是指当前的操作对象
      

  4.   

    <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(this);" /> <br>  <input type="button" value="按钮" onclick="bb()" ID=Button1/><br>
    </body>  
    </html>  
    看到红色部分没有, aaa(this)代表传入当前对象, 
    由于你上面没有定义this,所以默认的this代表当前的window,所以得到的是undifine
      

  5.   

    <html>   
    <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>    你可以用这个测试
      

  6.   

    看我的博客文章
    http://iamduyu.cn/?p=708