如何使用js在下载的文本文件中添加换行符

时间:2017-10-27 06:57:39

标签: javascript jquery html

我正在尝试以文本格式下载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;
&#13;
&#13;

https://jsfiddle.net/1L2vmdhu/

2 个答案:

答案 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。 我在这里添加了它。

react-sortable-pane

我更改了这样的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();
}