JavaScript追加和预结束在IE中不起作用

JavaScript追加和预结束在IE中不起作用,javascript,jquery,html,web,web-applications,Javascript,Jquery,Html,Web,Web Applications,我正试图通过点击按钮在文本区域内追加和前置一个HTML块,但它在Internet Explorer中不起作用 $(document).ready(function () { "use strict"; $('#export-file').click(function () { document.getElementById("codeToSave").prepend('<!doctype html>\n<h

我正试图通过点击按钮在文本区域内追加和前置一个HTML块,但它在Internet Explorer中不起作用

 $(document).ready(function () {
        "use strict";
       $('#export-file').click(function () {          
          document.getElementById("codeToSave").prepend('<!doctype html>\n<html> \n<head>');
          document.getElementById("codeToSave").append($.trim('</body>\n</html>'));
       });
    });


<ul class="control-list">
      <li class="controls" id="export-file" data-toggle="tooltip" title="Export " ><i class="fas fa-download"></i></li>                    
</ul>

<textarea id="codeToSave" disabled class="scrollStyle-3" ></textarea>
$(文档).ready(函数(){
“严格使用”;
$(“#导出文件”)。单击(函数(){
document.getElementById(“codeToSave”).prepend('\n\n');
document.getElementById(“codeToSave”).append($.trim('\n'));
});
});

实际上
.prepend
.append
都是实验技术:

(分别)方法将一组
节点
对象或
DOMString
对象插入到
父节点
的第一个子节点之前(分别位于最后一个子节点之后)

但我很确定您正在考虑使用jQuery的和方法。问题是
文档。getElementById(“codeToSave”)
是类型为的对象,而不是jQuery对象!在此之前,您不能在其上应用
.append
.prepend
。(如果你想使用内置的实验方法,我不确定你是否愿意

如果要在文本区域内添加HTML作为文本(而不是实际元素),只需更改其
textContent
属性:

$(文档).ready(函数(){
“严格使用”;
$(“#导出文件”)。单击(函数(){
document.getElementById(“codeToSave”).textContent=`
你好,世界
`;
});
});


两个问题。首先,当您使用本机选择器时,它们不会返回jQuery对象。因此,如果要使用jQuery方法,您必须将找到的元素放入
$()
中,或者只使用jQuery选择器方法

其次,将html附加到textarea并不显示它,因为它试图在将文本附加到元素之前解释文本,即使它是一个textarea。要解决此问题,可以通过给jQuery一个TextNode来强制它附加/前置数据

$(文档).ready(函数(){
“严格使用”;
$(“#导出文件”)。单击(函数(){
var$codeToSave=$(“#codeToSave”);
$codeToSave
.prepend(document.createTextNode('\n\n'))
.append(document.createTextNode($.trim('\n'));
});
});

  • 东西

为什么不关闭标记?Prepend需要节点,而不是字符串。这可能是您的问题的一部分。另外,您想做什么?我怀疑您做错了。