フォームに入力した文字列をpタグ付きに変換するJavaScriptを作った。
Stringオブジェクトがもつsplitメソッド使い道としていいサンプルだと思う。
例えば、
僕は勉強ができない 山田詠美 おっす!オラ、ゴクウ!
のような文字列の場合
<p>僕は勉強ができない<br> 山田詠美</p> <p>おっす!オラ、ゴクウ!</p>
と変換される。
一行空けて入力された文章までを一つの段落(pタグ)として扱うようにしてある。
テキストボックスの内容が、文字列allbodyに代入されているとすると、
// 改行文字をキーとして一行ずつ配列ごとに読み込み
var rows = new Array();
rows = allbody.split("\n"); // テキストボックスの内容が
// 改行までを一行としてrows[0], rows[1], ....と代入されます
とすることで、一行を配列の一要素として扱うことが出来て便利だ。
全ソース
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>フォームに入力した文字列をpタグ付きに変換</title>
<style>
*{
maigin: 0;
padding: 0;
}
body{
margin: 32px;
}
</style>
<script>
var $id = function(id){ return document.getElementById(id); };
// pタグ追加処理関数
function addPtag(allbody){
var pTagArea = $id("pTagArea");
allbody += "\n"; // 一行追加
// 改行文字をキーとして一行ずつ配列ごとに読み込み
var rows = new Array();
rows = allbody.split("\n"); // テキストボックスの内容が
// 改行までを一行としてrows[0], rows[1], ....と代入されます
var buffer = "";
var line = "<p>";
for(var i=0; i<rows.length-1; i++){
if(rows[i].length == 0) continue;
line += rows[i];
if(rows[i+1].length > 0){ // 次の改行までは同じpタグとして扱う
line += "<br>\n";
}
else{
line += "</p>\n";
buffer += line;
line = "<p>";
}
}
pTagArea.innerHTML = buffer;
}
// 表示イメージチェック用ウィンドウ
function checkHtmlWindow(tags){
var window1 = window.open('', 'checkWindow', 'width=500, height=350, menubar=no, toolbar=no, scrollbars=yes');
window1.document.write(tags);
window1.document.close();
}
</script>
</head>
<body>
<h1>フォームに入力した文字列をpタグ付きに変換</h1>
<details>
<summary>説明</summary>
<p>テキストボックスに入力された文章にpタグを付加します。<u>一行空けて入力された文章までを一つの段落(pタグ)扱いとします。</u></p>
</details>
<form name="form1">
<p>
変換前の文字列<br>
<textarea id="nonTagArea" rows="5" cols="80" placeholder="ここに変換した文字列を代入して下さい"></textarea><br>
<input type="button" onclick="addPtag($id('nonTagArea').value);" value="変換する">
</p>
<p><mark>変換後の文字列</mark><br>
<textarea id="pTagArea" rows="5" cols="80" placeholder="ここに変換後の文字列が表示されます"></textarea><br>
<input type="button" onclick="checkHtmlWindow($id('pTagArea').value);" value="HTML表示イメージをチェック">
</p>
</form>
</body>
</html>



コメント