简单人生
幻想指点江山,梦中激扬文字

    近日,在帮朋友写一段小程序的时候,用到了iframe,在iframe返回值的时候,我用parent.InputText.value=returnValue;时,javascript报错,说是找不到InputText ,我看了一下在form里,有这么一个Input框,而且id,name都设定了。为什么不能返回值呢?或者说为什么不能接收值呢?于是我用div试了一下:parent.returnDiv.innerText = returnValue ; 发现这个div就是显示了returnValue的内容,这是怎么回事?

    我没有深究原因,因为我比较懒,于是我就想了,既然div能够接收值,那干脆就用onchange属性来直接返回嘛。改成<div id='returnDiv' onchange="document.getElementById('InputText').value = this.innerText;">这样不就完事了?

    改完了测试,发现失败,查了一下DHTML手册,发现div是没有onchange这个事件的。于是看了手册下面的说明:

事件 描述
onactivate 对象设置为活动元素时触发。
onafterupdate 当成功更新数据源对象中的关联对象后在数据绑定对象上触发。
onbeforeactivate Microsoft® Internet Explorer 6 新增 对象要被设置为当前元素前立即触发。
onbeforecopy 当选中区复制到系统剪贴板之前在源对象触发。
onbeforecut 当选中区从文档中删除之前在源对象触发。
onbeforedeactivate activeElement 从当前对象变为父文档其它对象之前立即触发。
onbeforeeditfocus 在包含于可编辑元素内的对象进入用户界面激活状态前或可编辑容器变成控件选中区前触发。
onbeforepaste 在选中区从系统剪贴板粘贴到文档前在目标对象上触发。
onbeforeupdate 当成功更新数据源对象中的关联对象前在数据绑定对象上触发。
onblur 对象失去输入焦点时触发。
onclick 在用户用鼠标左键单击对象时触发。
oncontextmenu 在用户使用鼠标右键单击客户区打开上下文菜单时触发。
oncontrolselect 当用户将要对该对象制作一个控件选中区时触发。
oncopy 当用户复制对象或选中区,将其添加到系统剪贴板上时在源元素上触发。
oncut 对象或选中区从文档中删除并添加到系统剪贴板上时在源元素上触发。
ondblclick 当用户双击对象时触发。
ondeactivate activeElement 从当前对象变为父文档其它对象时触发。
ondrag 当进行拖曳操作时在源对象上持续触发。
ondragend 当用户在拖曳操作结束后释放鼠标时在源对象上触发。
ondragenter 当用户拖曳对象到一个合法拖曳目标时在目标元素上触发。
ondragleave 当用户在拖曳操作过程中将鼠标移出合法拖曳目标时在目标对象上触发。
ondragover 当用户拖曳对象划过合法拖曳目标时持续在目标元素上触发。
ondragstart 当用户开始拖曳文本选中区或选中对象时在源对象上触发。
ondrop 当鼠标按钮在拖曳操作过程中释放时在目标对象上触发。
onerrorupdate 更新数据源对象中的关联数据出错时在数据绑定对象上触发。
onfilterchange 当可视滤镜更改状态或完成转换时触发。
onfocus 对象获得焦点时触发。
onfocusin Microsoft® Internet Explorer 6 新增 当元素将要被设置为焦点之前触发。
onfocusout Microsoft® Internet Explorer 6 新增 在移动焦点到其它元素之后立即触发于当前拥有焦点的元素上触发。
onhelp 当用户在浏览器为当前窗口时按 F1 键时触发。
onkeydown 当用户按下键盘按键时触发。
onkeypress 当用户按下字面键时触发。
onkeyup 当用户释放键盘按键时触发。
onlayoutcomplete 当打印或打印预览版面处理完成用来自于源文档的内容填充当前 LayoutRect 对象时触发。
onlosecapture 对象失去鼠标捕捉时触发。
onmousedown 当用户用任何鼠标按钮单击对象时触发。
onmouseenter 当用户将鼠标指针移动到对象内时触发。
onmouseleave 当用户将鼠标指针移出对象边界时触发。
onmousemove 当用户将鼠标划过对象时触发。
onmouseout 当用户将鼠标指针移出对象边界时触发。
onmouseover 当用户将鼠标指针移动到对象内时触发。
onmouseup 当用户在鼠标位于对象之上时释放鼠标按钮时触发。
onmousewheel Microsoft® Internet Explorer 6 新增 当鼠标滚轮按钮旋转时触发。
onmove 对象移动时触发。
onmoveend 对象停止移动时触发。
onmovestart 对象开始移动时触发。
onpaste 当用户粘贴数据以便从系统剪贴板向文档传送数据时在目标对象上触发。
onpropertychange 当在对象上发生对象上发生属性更改时触发。
onreadystatechange 对象状态变更时触发。
onresize 对象的大小将要改变时触发。
onresizeend 当用户更改完控件选中区中对象的尺寸时触发。
onresizestart 当用户开始更改控件选中区中对象的尺寸时触发。
onscroll 当用户滚动对象的滚动条时触发。
onselectstart 对象将要被选中时触发。
ontimeerror 当特定时间错误发生时无条件触发,通常由将属性设置为无效值导致。

最终选定了onpropertychange,于是上面的div的内容就变成了
<div id='returnDiv' onpropertychange="document.getElementById('InputText').value = this.innerText;">,调试成功。呵呵。

例子:
测试框:
<INPUT TYPE="text" id="test1" size="30" onKeyup="document.getElementById('receiveDiv').innerText=this.value;"> (在这里输入字符)<BR><BR>
<div id='receiveDiv' onpropertychange="document.getElementById('test2').value=this.innerText;"></div>
<INPUT TYPE="text" id="test2" size="30">
<BR>
<BR>
这个测试只是测试 onpropertychange 的实现。
posted on 2006-09-18 17:25 简单人生 阅读(4622) 评论(3)  编辑 收藏 引用 所属分类: Loving PHP
Comments
只有注册用户登录后才能发表评论。