<!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>
----------
是不行的,因为我是要通过代码进行赋值,而不是点击事件,谢谢
function ChangeCHK() {}
里面进行值的控制呢?
if(chkTest.watch){
chkTest.watch("checked",function(){
alert(this.checked);
return true;
});
};
var check = chkTest.checked;
chkTest.checked = check == true ? false : true;
}在这里面控制不行吗?传入一个数值,判断数值后,再设置chkTest的属性
<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>
还是不行,
谢谢
-----------------------------------------------------------
RE:当然这样可以,但是我想用AOP的思想来解决这个问题
因为给他赋值选中不选中的地方不用去管他选中以后要做什么,
谢谢
<!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>
IE支持这样用(FF不支持):chkTest.setAttribute("checked",!chkTest.getAttribute("checked"));FF只支持这样(IE也支持):chkTest.checked = !chkTest.checked;不是说FF很WC吗?
<!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>
--------------------
虽然这个在这个环境是可以的,但还是不是我的要求
因为如果我更改这个checkbox的代码是放在别的而面,比如这个页面的window.parent
或者是别的事件,这里就不行了我要的功能为:
给一个checkbox添加一个事件,当这个checkbox的checked变化的时候触发我的一个事件(相当于sql的触发器)谢谢
-------------
是什么意思
为什么我在baidu和google中没有搜到相应的说明呢?谢谢
因为onpropertychange是判断全部的,而且没有oldvalue newval 进行对比
<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支持的更好