テキストエリア内のカーソルの「行番号」(行)を調べて追跡したいと思います。 (より大きな画像は、もちろん、テキストが貼り付けられていない場合は、改行/改変/選択が行われるたびに行のテキストを解析することです。テキストエリア内のカーソルの行(行)番号を調べる
StackOverflowにはいくつかの投稿がありますが、特に私の質問には答えられません。ほとんどの質問は、ピクセル単位のカーソル位置、またはテキストエリア以外の行番号の表示です。
私の試行は以下の通りです.1行目から開始し、テキストエリアを終了しないとうまくいきます。テキストエリアをクリックして別の行に戻すと失敗します。開始行が1でないため、テキストを貼り付けるときにも失敗します。
JavaScriptの知識はかなり限られています。
<html>
<head>
<title>DEVBug</title>
<script type="text/javascript">
var total_lines = 1; // total lines
var current_line = 1; // current line
var old_line_count;
// main editor function
function code(e) {
// declare some needed vars
var keypress_code = e.keyCode; // key press
var editor = document.getElementById('editor'); // the editor textarea
var source_code = editor.value; // contents of the editor
// work out how many lines we have used in total
var lines = source_code.split("\n");
var total_lines = lines.length;
// do stuff on key presses
if (keypress_code == '13') { // Enter
current_line += 1;
} else if (keypress_code == '8') { // Backspace
if (old_line_count > total_lines) { current_line -= 1; }
} else if (keypress_code == '38') { // Up
if (total_lines > 1 && current_line > 1) { current_line -= 1; }
} else if (keypress_code == '40') { // Down
if (total_lines > 1 && current_line < total_lines) { current_line += 1; }
} else {
//document.getElementById('keycodes').innerHTML += keypress_code;
}
// for some reason chrome doesn't enter a newline char on enter
// you have to press enter and then an additional key for \n to appear
// making the total_lines counter lag.
if (total_lines < current_line) { total_lines += 1 };
// putput the data
document.getElementById('total_lines').innerHTML = "Total lines: " + total_lines;
document.getElementById('current_line').innerHTML = "Current line: " + current_line;
// save the old line count for comparison on next run
old_line_count = total_lines;
}
</script>
</head>
<body>
<textarea id="editor" rows="30" cols="100" value="" onkeydown="code(event)"></textarea>
<div id="total_lines"></div>
<div id="current_line"></div>
</body>
</html>
、あなたは行意味ですか?テキストを書くとき、列と行は同じではありません。モノスペースでないフォントが使用されている場合、列はありません。 – Anurag
申し訳ありません、はい、私は行を意味します。元の投稿を更新します。 – ethicalhack3r