Object 对象。使用禁用的属性监视 window.onload=函数(){ var btn=document.getElementById(“按钮”); var tog=document.getElementById(“切换”); tog.onclick=函数(){ 如果(btn已禁用){ btn.disabled=false; }否则{ btn.disabled=true; } }; //手表(“禁用”,功能(prop,val,newval){}; };

Object 对象。使用禁用的属性监视 window.onload=函数(){ var btn=document.getElementById(“按钮”); var tog=document.getElementById(“切换”); tog.onclick=函数(){ 如果(btn已禁用){ btn.disabled=false; }否则{ btn.disabled=true; } }; //手表(“禁用”,功能(prop,val,newval){}; };,object,watch,javascript-objects,Object,Watch,Javascript Objects,如果测试此代码,切换按钮将成功启用和禁用另一个按钮 但是,取消对btn.watch()行的注释将始终将禁用的标记设置为true 有什么想法吗?因为watch定义的监视器函数必须返回新值: <html> <head> <script type="text/javascript"> window.onload = function() { var btn = document.getElementById("button"

如果测试此代码,切换按钮将成功启用和禁用另一个按钮

但是,取消对btn.watch()行的注释将始终将禁用的标记设置为true


有什么想法吗?

因为watch定义的监视器函数必须返回新值:

<html>
<head>
<script type="text/javascript">
window.onload = function() {
 var btn = document.getElementById("button");
 var tog = document.getElementById("toggle");
 tog.onclick = function() {
  if(btn.disabled) {
   btn.disabled = false;
  } else {
   btn.disabled = true;
  }
 };
 //btn.watch("disabled", function(prop, val, newval) { });
};
</script>
</head>
<body>
<input type="button" value="Button" id="button" />
<input type="button" value="Toggle" id="toggle" />
</body>
</html>
编辑: 我假设您希望在不影响脚本功能的情况下定义监视器方法。这就是为什么您必须注意为
disabled
属性返回新值的原因

 btn.watch("disabled", function(prop, val, newval) { return newval; });