<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>local file save</title>
<script>
window.onload = function(){
//<div id="content">内にテキストを表示する
var text = "";
for ( var i = 0; i < 5; i++ ) {
text = text + "テキストテキストテキスト" + "<br>\n";
}
var contentArea = document.querySelector("#content");
contentArea.innerHTML = text;
}
</script>
</head>
<body>
<div id="content"></div>
<input type="button" value="保存" onclick="save();">
</body>
</html>
テキストを変数に入れて、指定の箇所に表示する時、改行を入れる必要があるならば、 + "
\n"を入れておくと、
このように改行有りで表示されます。この状態でファイルに出力すると、
テキストテキストテキスト<br> テキストテキストテキスト<br> テキストテキストテキスト<br> テキストテキストテキスト<br> テキストテキストテキスト<br>
このように
が入った状態で出力されます。この<br>を削除してファイル出力を行いたい場合は、ファイル出力の関数で
function save(){
//<div id=”content”>で囲まれた箇所の文章を取得する
var content = document.querySelector("#content").innerHTML;
//文中にある<br>をすべて消す
var content = content.replace(/<br>/g, "");
//取得した文章をtextファイルの形式に変換
//content.trim()は文章の前後のスペースを削除
var blob = new Blob([content.trim()], {type : "text/plain"});
//ダウンロードリンクを付ける
var link = document.createElement("a");
link.href = window.URL.createObjectURL(blob);
//ダウンロードするファイル名を決めます
link.download = "file.txt";
//画面に一瞬だけダウンロードリンクを表示し、ファイルのダウンロードを行う
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
ファイルを出力する際に、var content = content.replace(/<br>/g, "");の処理を挟んでおくと、文中にある
はすべて消えます。
テキストテキストテキスト テキストテキストテキスト テキストテキストテキスト テキストテキストテキスト テキストテキストテキスト
<br>と\nですが、<br>はHTMLタグの一種で、ブラウザがHTMLを読み込んで表示する際、<br>を含む文字列で<br>の箇所で改行されるものです。\nは改行コードで、ソースコードを表示すると、\nの箇所で改行されています。
var content = content.replace(/<br>/g, "");ですが、変数(ここではcontent)の中に入っている文字列で、第一引数が置換(文字を指定の文字で置き換える)したい文字で/<br>/gの様に//gで挟んで中に置換したい文字(<br>)を入れることで、文中にあるすべての<br>を第二引数(ここでは空文字)に変えるという処理を行います。第一引数で//gではさまなかった場合は、変数内で最初に出現した<br>を置換するという処理になります。

0 件のコメント:
コメントを投稿