<input type="text" name="a" onpropertychange="" value="事件为空">
<input type="text" name="b" onpropertychange="chk();" value="事件有值">请教:js函数里如何知道a的onpropertychange为空,b的onpropertychange不为空呢?

解决方案 »

  1.   

        var aaa = document.getElementById("a");
        alert(aaa.onpropertychange);
        var aaa = document.getElementById("b");
        alert(aaa.onpropertychange);
      

  2.   

    只要你写了:onpropertychange="" 
    那么这个onpropertychange就不是空
    等效于下面这个匿名函数,只是内容为空:
    function(){
    }
    建议你干脆不要写onpropertychange="" 
      

  3.   

    onpropertychange="chk(this);"function chk(obj){
     var objvalue = obj.value;
     //判断 objvalue
    }
      

  4.   

    onpropertychange这个函数的值是动态生成的,如果是onpropertychange=""的话有没有办法判断呢?
      

  5.   

    可以用正则来判断是否为“function xxx(){}”
    <input type="text" name="a" onclick="" onpropertychange="" value="事件为空">
    <input type="text" name="b" onclick="chk();" onpropertychange="chk();" value="事件有值"> 
    <script type="text/javascript">
    var a = document.getElementsByName("a")[0];
    var b = document.getElementsByName("b")[0];
    alert(!a.onclick || /^function\s+\w+\((event)?\)\s*{\s*}\s*$/i.test(a.onclick)); // true
    alert(!a.onclick || /^function\s+\w+\((event)?\)\s*{\s*}\s*$/i.test(b.onclick)); // falsealert(!a.onpropertychange || /^function\s+\w+\((event)?\)\s*{\s*}\s*$/i.test(a.onpropertychange));
    alert(!a.onpropertychange || /^function\s+\w+\((event)?\)\s*{\s*}\s*$/i.test(b.onpropertychange));
    </script>另外onpropertychange是ie专属事件,在其他浏览器没有效果。
      

  6.   

    由于程序结构,没办法把onpropertychange=""这种情况时不要写onpropertychange="",所以只能通过对onpropertychange=""的判断这个函数没值。
      

  7.   

    一个变通的作法,IE下有效:
    var aaa = document.getElementById("a");
    alert(aaa.outerHTML.indexOf('onpropertychange=""'));
      

  8.   

    只能用正则判断,#5 已给出方法!Web 开发常用手册JScript语言参考.rar
    http://download.csdn.net/source/308916DHTML参考手册.rar
    http://download.csdn.net/source/308913样式表中文手册.chm
    http://download.csdn.net/source/304124