テキストエリアからランダムに3行取り出す


動作ブラウザ 【 IE:4.0   NN:6.0
Internet Explorer Netscape Navigator Firefox Opera iCab Safari
3.0x 4.0x 4.5 5.0x 5.5 6.0 2.0x 3.0x 4.0x 4.x 6.0 7.0 8.0 1.0 7.x 8.x 2.x 1.x 2.x
Windows × - × × × -
Macintosh × ? ? - × × - × × ×
UNIX - - - - - × × × × × × - × × × -

ポイント if (navigator.userAgent.indexOf("Mac") > -1) result = txt.split("\n"); if (navigator.userAgent.indexOf("Win") > -1) result = txt.split("\r\n");
説  明 テキストエリアからランダムに3行取り出すにはsplit()を使って改行コードで文字列を分割します。あとは乱数を発生させ、そこを基準として配列から抽出していきます。
サンプル <html> <head> <title>テキストエリアからランダムに3行取り出す</title> <script type="text/javascript"><!-- function getTAline() { result = null; resultText = ""; getLine = 3; // 3行抽出 txt = document.myFORM.myTEXT.value; if (navigator.userAgent.indexOf("Mac") > -1) result = txt.split("\n"); if (navigator.userAgent.indexOf("Win") > -1) result = txt.split("\r\n"); if (result && (result.length > getLine)) { n = Math.floor(Math.random() * (result.length - (getLine - 1))); for (i=n; i<n+getLine; i++) { resultText = resultText + result[i] + String.fromCharCode(13); } }else{ resultText = txt; } document.myFORM.resultTEXT.value = resultText; } // --></script> </head> <body> <form name="myFORM"> 元のテキスト<br><textarea rows="6" name="myTEXT"></textarea><br> <input type="button" value="ランダムに3行取得" onClick="getTAline()"><br> 3行抽出結果<br><textarea rows="6" name="resultTEXT"></textarea><br> </form> </body> </html>
補足説明 ブラウザによって取り扱う改行コードが異なるので注意が必要です。つまり改行コードはOSとブラウザに依存します。このため、このサンプルでもMac版のFirefoxでは動作してもWindows版のFirefoxでは正しく動作しません。

■サンプルスクリプトを実行する >>実行
■各ブラウザでの動作結果を見る >>View!

写真素材 PIXTA