+ -
当前位置:首页 → 问答吧 → 用innerHTML无法获取容器里刚刚输入值的控件value或者checked(有代码)

用innerHTML无法获取容器里刚刚输入值的控件value或者checked(有代码)

时间:2010-05-28

来源:互联网


<div id="test1"> 有文字<input type="checkbox" />有很多checkbox<input type="text" />和textbox </div> <input value="GetHTML" type="button" onclick="alert(document.getElementById('test1').innerHTML)" />
 提示:您可以先修改部分代码再运行
点了checkbox或者输入文字后,点击按钮,
居然得不到刚刚点击的结果和输入东西.
ie6可以, ie8只有text有value, ff都不行.类似这样的需求,还有其它可行的方法?
理想的情况是当我点checkbox和输入aaa后,得到innerHTML是
复制内容到剪贴板
代码:
有文字<input type="checkbox" checked />有很多checkbox<input type="text" value="aaa"  />和textbox
各位帮忙想想办法, 谢过了.

[ 本帖最后由 lingling8 于 2010-5-28 21:12 编辑 ]

作者: lingling8   发布时间: 2010-05-28


<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js" /> <script> function abc(){ $("#test2").html($("#test1").clone()); } </script> <div id="test1"> 有文字<input type="checkbox" />有很多checkbox<input type="text" />和textbox </div> <input value="GetHTML" type="button" onclick="abc();" /> <div id="test2"></div>
 提示:您可以先修改部分代码再运行

作者: ybhuxiao   发布时间: 2010-05-28

这个问题比较麻烦,反正我是没有什么特别好的解决办法,你可以参考
http://www.cnblogs.com/cloudgame ... /06/TableOrder.html
他这个帖子在最后面有关于这个问题的解决办法,但是也相当麻烦

jquery可以解决这个问题,我用firefox和chrome测试是没问题的,源码没研究过

作者: ybhuxiao   发布时间: 2010-05-28

直接在页面上clone是没问题的, 不用jquery 直接用JS
document.body.appendChild(sourceDiv.cloneNode(true));也可以的.
但我是想想把这个innerHTML做为一个str保存下来. 就取不到的.
要alert  innerHTML 能出来 , 才行.

我刚开始的例子给错了,现在改过了.

[ 本帖最后由 lingling8 于 2010-5-28 21:13 编辑 ]

作者: lingling8   发布时间: 2010-05-28

哎...没办法了...只能用遍历 替换了....代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <script> function getHTML() { var sourceDiv = document.getElementById('test1'); var elements = sourceDiv.getElementsByTagName("input"); for(i=0; i< elements.length; i++) { if(elements[i].type == "text") { elements[i].setAttribute("value",elements[i].value); } if(elements[i].type == "checkbox") { if(elements[i].checked) { elements[i].setAttribute("checked",true); } else { elements[i].removeAttribute("checked"); } } } alert(sourceDiv.innerHTML); } </script> </head> <body> <div id="test1"> 有文字<input type="checkbox" name="PreTest" checked="" />有很多checkbox<input type="text" name="PreTest" />和textbox有文字 </div> <input value="GetHTML" type="button" onclick="getHTML()" /> </body> </html>
 提示:您可以先修改部分代码再运行
[ 本帖最后由 lingling8 于 2010-5-29 09:30 编辑 ]

作者: lingling8   发布时间: 2010-05-29

相关阅读 更多