我现在需要这样一个功能,比如在页面中有这样一个元素
- HTML code
<div id="panel"><div/>
我有一些操作inerHTML的操作
- JScript code
document.getElementById("panel").innerHTML = "sdfsd";
我想在这个div元素上监听这个事件,每当有内容发生变化时都要触发。
在网上查了一些例子,onproperchange不触发,其他的自定义事件的方法都有局限性,比如说这个
- JScript code
function Element(value, domEL){ this.domEl = domEL; this.domEl.getValue = function() { return value; }; this.domEl.setValue = function(newValue){ var isChange = false || value!=newValue; value = newValue; if(isChange && this.onValueChange) this.onValueChange(); }; this.domEl.buttonObj = this; this.domEl.onValueChange=this.valueChangeHandler; } Element.prototype.valueChangeHandler=function(){ var buttonObj = this.buttonObj; alert('value is changed to '+ buttonObj.domEl.getValue()); } var b = new Element(1, document.getElementById("panel"));
一定要调用其中的setvalue方法才能触发。
高手指教!
------解决方案--------------------
纯支持,我在尝试自动提交ext的htmleditor的时候遇到类似的问题,还不会解决
------解决方案--------------------
纯支持。。。
是我的话两种思路:
1.写一个方法,专门执行document.getElementById("panel").innerHTML = "sdfsd";并检查改变
2.setInterVal()...
------解决方案--------------------
朋友, 你看看是不是写错了,丢了TY onpropertychange,
------解决方案--------------------
自己写个innerHTML行吗?
- JScript code
var Element = function(obj){ this.element = obj; return this; } Element.prototype.innerHTML = function(txt, callBack) { var _arg = []; var _len = arguments.length; for(var i = 0; i < _len; i++) { _arg[i] = arguments[i]; } var _oldTxt = this.element.innerHTML; this.element.innerHTML = _arg.shift(); _arg.shift(); callBack.apply(window, [_oldTxt, txt].concat(_arg)); } var $Element = function(id) { var _obj = (typeof(id) == 'string')? document.getElementById(id) : id; return new Element(_obj); } function alertIt(oldTxt, newTxt, str) { alert(str); } $Element('box').innerHTML('ddd', alertIt, '内容改变了!');
------解决方案--------------------
目前DOM的标准没有暴露出这样一个接口,个人感觉,楼上的重载innerHTML的方式,要比setInterval好,最好还是修改下设计或者算法,这个需求还是有点怪。