我正在尝试以文本格式下载div内容。
我能够以txt格式下载div内容,但所有内容都是同一行。
我需要在每个元素中添加换行符。
function download() {
var a = document.body.appendChild(
document.createElement("a")
);
a.download = "export.txt";
a.href = "data:text/html," + document.getElementById("show-data").innerHTML;
a.click();
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="show-data">
<p>one</p>
<p>two</p>
<p>Three</p>
</div>
<button onClick="download()">Download</button>
&#13;
答案 0 :(得分:6)
请尝试使用以下示例,因为您要以url的形式传递数据,您必须编码新的行字符,这将使其工作,另一件事是您尝试下载为文本,因此将内容类型更改为“text /平淡的“
function download() {
var a = document.body.appendChild(
document.createElement("a")
);
var textToWrite = document.getElementById("show-data").innerText;
a.download = "export.txt";
textToWrite = textToWrite.replace(/\n/g, "%0D%0A");
a.href = "data:text/plain," + textToWrite;
a.click();
}
<div id="show-data">
<p>one</p>
<p>two</p>
<p>Three</p>
</div>
<button onClick="download()">Download</button>
答案 1 :(得分:-2)
EDIT。
您可以将\ r \ n添加到所有行的末尾,并在将文本输出输出到文本文件之前使用文本输出上的encodeURIComponent。 我在这里添加了它。
我更改了这样的javascript以使其正常工作。
function download() {
var a = document.body.appendChild(
document.createElement("a")
);
a.download = "export.txt";
var list = document.getElementsByTagName("p");
var b = "";
for (var i = 0; i < list.length; i++) {
console.log(list[i].innerHTML);
b += list[i].innerHTML + "\r\n";
}
b = encodeURIComponent(b);
a.href = "data:text/html," + b;
a.click();
}