请教javascript高手,有关自定义事件,比较急

symbol_bc 2010-04-23 11:22:12
我现在需要这样一个功能,比如在页面中有这样一个元素
code=HTML]<div id="panel"><div/>[[/code]

我有一些操作inerHTML的操作
code=JScript]JScript codedocument.getElementById("panel").innerHTML = "sdfsd";[[/code]

我想在这个div元素上监听这个事件,每当有内容发生变化时都要触发。

在网上查了一些例子,onproperchange不触发,其他的自定义事件的方法都有局限性,比如说这个

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方法才能触发。
高手指教!
...全文
124 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
mngzilin 2010-04-23
  • 打赏
  • 举报
回复
定时监听
setTimer addEventListener/attachEvent
wujinjian2008n 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 symbol_bc 的回复:]

引用 8 楼 wujinjian2008n 的回复:
你好好看一下,测一下 我的代码,div 用户可以自己输的。

<div id="panel" contentEditable=true style="width:200px;height:200px;border:gray solid 1px">
</div>


哦,测过了,还不错,原来是死循环,不知道这东西死循环的话回不回出……
[/Quote]

不会有什么意外的
symbol_bc 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wujinjian2008n 的回复:]
你好好看一下,测一下 我的代码,div 用户可以自己输的。

<div id="panel" contentEditable=true style="width:200px;height:200px;border:gray solid 1px">
</div>
[/Quote]

哦,测过了,还不错,原来是死循环,不知道这东西死循环的话回不回出现什么意外情况什么的,你明白我的意思,有没有触发式的???
wujinjian2008n 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 symbol_bc 的回复:]

引用 5 楼 mengxj85 的回复:
<div id="panel"><div/>
其实DIV内容变化是需要JS去触发的,毕竟你这个DIV还不能当编辑框用,所以大可不用监听,如果需要,那就写一个通过用给DIV赋值的方法,在方法里面监听


真不巧啊!我这个div还真就是编辑用的,呵呵!要不然也不会难死我,
我能想到的最后的方法就只剩下SetInternal了
[/Quote]

只能靠 定时器了
wujinjian2008n 2010-04-23
  • 打赏
  • 举报
回复
你好好看一下,测一下 我的代码,div 用户可以自己输的。

<div id="panel" contentEditable=true style="width:200px;height:200px;border:gray solid 1px">
</div>
symbol_bc 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mengxj85 的回复:]
<div id="panel"><div/>
其实DIV内容变化是需要JS去触发的,毕竟你这个DIV还不能当编辑框用,所以大可不用监听,如果需要,那就写一个通过用给DIV赋值的方法,在方法里面监听
[/Quote]

真不巧啊!我这个div还真就是编辑用的,呵呵!要不然也不会难死我,
我能想到的最后的方法就只剩下SetInternal了
symbol_bc 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wujinjian2008n 的回复:]
HTML code

<html>
<head>
<title>wujinjian</title>
<script type="text/javascript">
var first=true;
var divvalue;

function abc()
……
[/Quote]

兄弟,谢谢你的回复,可是我现在是做html编辑器,这个情况比较多,为当前panel赋值不一定只通过
document.getElementById("panel").innerHTML = "sdfsd";这种方式做,
比如
1.我可以用代码的方式document.getElementById("panel").innerHTML = "sdfsd";(可以用你说的方法)
2.document.execCommand()来用html命令来做。
3.因为页面可编辑,用户可直接用键盘操作。
哎!!!
mengxj85 2010-04-23
  • 打赏
  • 举报
回复
<div id="panel"><div/>
其实DIV内容变化是需要JS去触发的,毕竟你这个DIV还不能当编辑框用,所以大可不用监听,如果需要,那就写一个通过用给DIV赋值的方法,在方法里面监听
wujinjian2008n 2010-04-23
  • 打赏
  • 举报
回复
用 setTimeout("ddd()",0); 去监控 不就好了吗
wujinjian2008n 2010-04-23
  • 打赏
  • 举报
回复

<html>
<head>
<title>wujinjian</title>
<script type="text/javascript">
var first=true;
var divvalue;

function abc()
{
document.getElementById("panel").innerHTML="好好学习,天天向上";
}

window.onload=ddd;

function ddd()
{
if(first)
{
divvalue=document.getElementById("panel").innerHTML;

first=false;
}

if(divvalue!=document.getElementById("panel").innerHTML)
{
first=true;
alert("div 的值已改变!");
}

setTimeout("ddd()",0);
}


</script>
</head>
<body>
<div id="panel" contentEditable=true style="width:200px;height:200px;border:gray solid 1px">
</div>

<br><br>
<input type="button" onclick="abc()" value="button">
</body>
</html>
symbol_bc 2010-04-23
  • 打赏
  • 举报
回复
掉的真快
symbol_bc 2010-04-23
  • 打赏
  • 举报
回复
重发一遍

我现在需要这样一个功能,比如在页面中有这样一个元素
<div id="panel"><div/>


我有一些操作inerHTML的操作
JScript codedocument.getElementById("panel").innerHTML = "sdfsd";


我想在这个div元素上监听这个事件,每当有内容发生变化时都要触发。

在网上查了一些例子,onproperchange不触发,其他的自定义事件的方法都有局限性,比如说这个

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧