首页 新闻 会员 周边 捐助

JS相关简单问题

0
悬赏园豆:30 [已解决问题] 解决于 2010-10-29 14:18

我想要实现下面的功能

1.给textbox赋值

2.然后给textbox添加onpropertychange事件

3.使div显示textbox中的内容

实现代码如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<style type="text/css">
input["type=text"]
{
display
:none;
}

div
{
border-top
:solid 5px silver;
border-right
:solid 1px silver;
border-bottom
:solid 5px silver;
border-left
:solid 1px silver;
width
:300px;
height
:200px;

}
</style>
<script type="text/javascript">
function btn_click() {
var txt = document.getElementById("txt_name");
txt.value
= "OK";
txt.onpropertychange
= function () {
document.getElementById(
"div_result").innerHTML = txt.value;
}

}

</script>
</head>
<body>
<input type="text" id='txt_name' />
<input type="button" id="btn_show" value="click me" onclick="btn_click();" />
<div id="div_result"></div>
</body>
</html>
现在出现这样一个问题:

我给textbox添加onpropertychange事件是在给textbox赋值之后,但结果却是在给textbox赋值为"OK"时,该textbox就已经有了onpropertychange事件,并将内容显示在了div中.

请问这是为什么啊?

Localhost的主页 Localhost | 菜鸟二级 | 园豆:443
提问于:2010-10-29 11:37
< >
分享
最佳答案
0

估计这是DOM延迟渲染的关系,引擎会在函数执行完后再将函数中对DOM的修改一起应用,这样能减少页面的重新布局的次数

收获园豆:30
Gray Zhang | 专家六级 |园豆:17610 | 2010-10-29 13:24
谢谢. 请问如何能实现我想实现的功能. 加载数据后,在执行事件.
Localhost | 园豆:443 (菜鸟二级) | 2010-10-29 13:28
用attachEvent来注册onpropertychange就行,别问我为啥了,onpropertychange这个事件IE特有而且BUG一堆堆的,一般都用setInterval去模拟而不直接用
Gray Zhang | 园豆:17610 (专家六级) | 2010-10-29 13:32
感谢! 确实可以.我试了下 $addHandler(txt, "propertychange", function () { document.getElementById("div_result").innerHTML = txt.value; }); 结果也是可以的,万分感谢.
Localhost | 园豆:443 (菜鸟二级) | 2010-10-29 14:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册