这个小提琴https://jsfiddle.net/xa9m49zy/表明你可以在渲染时获得DOM中的textarea的outerHTML(带有文本区域值),但是当textarea动态添加到DOM时,outerHTML不会不包含文本区域值。它在Firefox和Chrome中不起作用,但它 在IE和Edge中工作。
HTML:
<textarea id="abc">
Test
</textarea>
JS:
console.log($("#abc").get(0).outerHTML); //returns everything as expected
$("<textarea id='xyz'></textarea>").val("Test 2").appendTo("body");
console.log($("#xyz").get(0).outerHTML); //only shows <textarea></textarea> in non-MS browsers
这里发生了什么?这是Chrome和Firefox中的错误吗?
答案 0 :(得分:3)
问题是您使用textarea
设置了第二个.val()
的值,但是outerHTML
没有检索值,它会检索一个元素,该元素的内容。
textarea
元素从内容中获取价值。
如果您使用第二个
textarea
设置内容.text()
方法,它有效。
alert($("#abc").get(0).outerHTML); //returns everything as expected
$("<textarea id='xyz'></textarea>").text("Test 2").appendTo("body");
alert($("#xyz").get(0).outerHTML); //only shows <textarea></textarea> in non-MS browser
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<textarea id="abc">
Test
</textarea>
&#13;