我有一个 html 文档
<html>
<head></head>
<body>
<form>
<input type="text" value="" />
</form>
<input type="button" id="doit" value="do it"/>
<!-- jQuery -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function() {
$("#doit").click(function(){
var dom = document.documentElement.innerHTML;
alert(dom);
});
});
</script>
</body>
</html>
如果我编辑文本字段,其值仍然是警报中的原始空白值...为什么?以及如何查看字符串中的实际 DOM?
最佳答案
您需要使用当前值显式设置每个属性:http://jsfiddle.net/GW8eU/ .
$("#doit").click(function(){
$('*').each(function() {
var $this = $(this);
for(var i = 0; i < this.attributes.length; i++) {
try {
var t = this.attributes[i];
$this.attr(t.name, $this.prop(t.name));
} catch(e) {}
};
});
var dom = document.documentElement.innerHTML;
alert(dom);
});
它相当脏,我没有看到将 DOM 输出到字符串背后的真正原理,但它似乎回答了你的问题。
它脏的原因之一是 try
block 是必不可少的,否则你将设置 input
的 type
属性> 这是不可变的。我非常确定这也不适用于其他特殊属性,但对于 input
的 value
来说,它工作得很好。
因此我仍然想知道想要 DOM 作为字符串的原因是什么;可能有一个更优雅的解决方案。
关于javascript - 有没有办法将实际的 DOM 写入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6776115/