链接://bbsmax.ikafan.com/static/L3Byb3h5L2h0dHBzL2Jsb2cuY3Nkbi5uZXQvd2lkZTI4OC9hcnRpY2xlL2RldGFpbHMvMzQxMTY0OTU=.jpg
近日,在帮朋友写一段小程序的时候,用到了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 | 对象要被设置为当前元素前立即触发。 |
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 | 当元素将要被设置为焦点之前触发。 |
onfocusout | 在移动焦点到其它元素之后立即触发于当前拥有焦点的元素上触发。 |
onhelp | 当用户在浏览器为当前窗口时按 F1 键时触发。 |
onkeydown | 当用户按下键盘按键时触发。 |
onkeypress | 当用户按下字面键时触发。 |
onkeyup | 当用户释放键盘按键时触发。 |
onlayoutcomplete | 当打印或打印预览版面处理完成用来自于源文档的内容填充当前 LayoutRect 对象时触发。 |
onlosecapture | 当对象失去鼠标捕捉时触发。 |
onmousedown | 当用户用任何鼠标按钮单击对象时触发。 |
onmouseenter | 当用户将鼠标指针移动到对象内时触发。 |
onmouseleave | 当用户将鼠标指针移出对象边界时触发。 |
onmousemove | 当用户将鼠标划过对象时触发。 |
onmouseout | 当用户将鼠标指针移出对象边界时触发。 |
onmouseover | 当用户将鼠标指针移动到对象内时触发。 |
onmouseup | 当用户在鼠标位于对象之上时释放鼠标按钮时触发。 |
onmousewheel | 当鼠标滚轮按钮旋转时触发。 |
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 的实现。