我真的很惊讶我以前没有遇到过这个问题,但似乎在元素上调用 jQueries .html() 函数会忽略 DOM 中的更改,即它返回原始源中的 HTML。IE 不这样做。jQueries .html() 只是在内部使用 innerHTML 属性。
这是注定要发生的吗?我在 Firefox 3.5.2 上。我在下面有一个示例,无论您将文本框值更改为什么,“容器”元素的 innerHTML 都只会返回 HTML 标记中定义的值。该示例不使用 jQuery 只是为了使其更简单(使用 jQuery 的结果是相同的)。
有没有人可以解决我可以在其当前状态下获取容器的 html 的方法,即包括对 DOM 的任何脚本更改?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<script type="text/javascript">
<!--
function BodyLoad(){
document.getElementById("textbox").value = "initial UPDATE";
DisplayTextBoxValue();
}
function DisplayTextBoxValue(){
alert(document.getElementById("container").innerHTML);
return false;
}
//-->
</script>
</head>
<body onload="BodyLoad();">
<div id="container">
<input type="text" id="textbox" value="initial" />
</div>
<input type="button" id="button" value="Test me" onclick="return DisplayTextBoxValue();" />
</body>
</html>