下面的代码好奇怪啊在 add 函数中,已经把全局变量 cnt 加1了,并且通过 alert 已经能够清楚的知道这个变量的值的变化情况
但是在 onClick1 函数中,连续两次 alert 变量 cnt 的值,却显示的结果不一样<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <script type="text/javascript">
var cnt = 0; function add(){
alert("before = " + cnt);
cnt++;
alert("after = " + cnt);
} function onClick1(){
document.getElementById("t1").focus();
document.getElementById("t2").focus();
document.getElementById("btn").focus();

alert(cnt);
alert(cnt);
}
  
  </script>
 </HEAD>
 <BODY>
  <form name="form1">
<input type="text" name="t1" id="t1" onblur="add()" /><br/>
<input type="text" name="t2" id="t2" onblur="add()" /><br/>
<input type="button" value="test" id="btn" onclick="onClick1()" />
  </form>
  <span id="sp1" style="color: red">abc</span>
 </BODY>
</HTML>

解决方案 »

  1.   

       function onClick1(){
            document.getElementById("t1").focus();
            document.getElementById("t2").focus();
            document.getElementById("btn").focus();
            
            alert(cnt);
            alert(cnt);
        }
    这个有问题吧,,获得焦点当然只能有一个,这样执行后只能看到最后获行焦点
      

  2.   


    这个没问题的我是让它们依次得到焦点。就是说,t1得到焦点后,马上让t2得到焦点,这样t1自然就失去焦点了,于是触发 onblur 事件,使 cnt++
      

  3.   

    你的事件冲突了!alert 会阻隔线程!你这样试试就明白了
    function add(){
           // alert("before = " + cnt);
            cnt++;
           // alert("after = " + cnt);
        }
      

  4.   

    在两个alert(cnt);
    alert(cnt);
    前面加个cnt++;
    再看看结果,看看执行顺序。
      

  5.   

    IE 和 FF 对 focus blur 执行有区别FF 下是一样的!
      

  6.   

    确实很神奇 你把这个代码在FireFox中运行 你会发现最后两个alert 结果是相同的 同样求解释..等待学习
      

  7.   

    function onClick1(){
            document.getElementById("t1").focus();
            document.getElementById("t2").focus();
            document.getElementById("btn").focus();
            
            alert(cnt);
            alert(cnt);
        }这个还是会执行add()方法...
      

  8.   

    晕死,几天了都没人会吗,CSDN的高手哪去了?