<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>
    <input id="chkTest" type="checkbox" checked="checked" />
    <input type="button" value="更改" onclick="ChangeCHK()" />    <script type="text/javascript">
        var chkTest = document.getElementById("chkTest");
        chkTest.onpropertychange = function() {
            alert(this.checked);
        }
    </script>    <script type="text/javascript">
        function ChangeCHK() {
            var check = chkTest.checked;
            chkTest.checked = check == true ? false : true;
        }
    </script></body>
</html>

解决方案 »

  1.   

    onchange
    ----------
    是不行的,因为我是要通过代码进行赋值,而不是点击事件,谢谢
      

  2.   

    为什么不直接在
    function ChangeCHK() {}
    里面进行值的控制呢?
      

  3.   


    if(chkTest.watch){
        chkTest.watch("checked",function(){
            alert(this.checked);
            return true;
        });
    };
      

  4.   

    function ChangeCHK() {
                var check = chkTest.checked;
                chkTest.checked = check == true ? false : true;
            }在这里面控制不行吗?传入一个数值,判断数值后,再设置chkTest的属性
      

  5.   

    我照网上改的:
        <script type="text/javascript">
            var chkTest = document.getElementById("chkTest");
            if (document.all) {
                chkTest.onpropertychange = function() {
                    alert(this.checked);
                }
            }
            else {
                chkTest.addEventListener("input", function() {
                    alert(this.checked);
                }, false);
            }
        </script>
    还是不行,
    谢谢
      

  6.   

    在这里面控制不行吗?传入一个数值,判断数值后,再设置chkTest的属性
    -----------------------------------------------------------
    RE:当然这样可以,但是我想用AOP的思想来解决这个问题
    因为给他赋值选中不选中的地方不用去管他选中以后要做什么,
    谢谢
      

  7.   

    FF下onchange只能由鼠标直接点击触发
      

  8.   

    FF下checkbox.onchange只能由鼠标直接点击触发
      

  9.   

    试试
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
    </head>
    <body>
        <input id="chkTest" type="checkbox" checked="checked" />
        <input type="button" value="更改" onclick="ChangeCHK()" />    <script type="text/javascript">
            var chkTest = document.getElementById("chkTest");
            chkTest.onchange = function() {
                alert(this.checked);
            }
        </script>    <script type="text/javascript">
            function ChangeCHK() {
                var check = chkTest.checked;
    if(document.all){
    //ie
    chkTest.fireEvent("onclick");
    }
    else{   
    //firefox
    var evt = document.createEvent("MouseEvents");
    evt.initMouseEvent("click",true,true,window,0, 0, 0, 0, 0, false,false,false,false,0,null);
    chkTest.dispatchEvent(evt);
    }
            }
        </script></body>
    </html>
      

  10.   

    就楼主这个例子,
    IE支持这样用(FF不支持):chkTest.setAttribute("checked",!chkTest.getAttribute("checked"));FF只支持这样(IE也支持):chkTest.checked = !chkTest.checked;不是说FF很WC吗?
      

  11.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
    </head>
    <body>
        <input id="chkTest" type="checkbox" checked="checked" />
        <input type="button" value="更改" onclick="ChangeCHK()" />    <script type="text/javascript">
            var chkTest = document.getElementById("chkTest");
            if(chkTest.watch){
    chkTest.watch("checked",function(id, oldval, newval)
      {
     alert(newval);
     return newval;
      });
    }
    else
    {
    chkTest.onpropertychange = function() {
    alert(this.checked);
    }
    }
        </script>    <script type="text/javascript">
            function ChangeCHK() {
                var check = chkTest.checked;
                chkTest.checked = check == true ? false : true;
            }
        </script></body>
    </html>
      

  12.   

    回复:foolbirdflyfirst
    --------------------
    虽然这个在这个环境是可以的,但还是不是我的要求
    因为如果我更改这个checkbox的代码是放在别的而面,比如这个页面的window.parent
    或者是别的事件,这里就不行了我要的功能为:
    给一个checkbox添加一个事件,当这个checkbox的checked变化的时候触发我的一个事件(相当于sql的触发器)谢谢
      

  13.   

    chkTest.watch
    -------------
    是什么意思
    为什么我在baidu和google中没有搜到相应的说明呢?谢谢
      

  14.   

    这么强大的功能IE不支持,晕死,有没有什么代码可以让他支持的,谢谢
    因为onpropertychange是判断全部的,而且没有oldvalue newval 进行对比
      

  15.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
    </head>
    <body>
        <input id="chkTest" type="checkbox" checked="checked" />
        <input type="button" value="change" onclick="ChangeCHK()" />    <script type="text/javascript">
            var chkTest = document.getElementById("chkTest");
            if(chkTest.watch){
                chkTest.watch("checked",function(id, oldval, newval)
                  {
                     alert(newval);
                     return newval;
                  });
            }
            else
            {
                chkTest.onpropertychange = function() {
                    alert(this.checked);
                }
            }
        </script>    <script type="text/javascript">
            function ChangeCHK() {
                var check = chkTest.checked;
                chkTest.checked = check == true ? false : true;
            }
        </script></body>
    </html>
    这段代码我在IE6.0和IE8.0下都能正常工作,鼠标点击或者通过代码设置勾中都能触发
    但在FF4.0中只有代码才能触发,而鼠标却不触发
    感觉还是IE支持的更好