Tôi muốn tìm hiểu và theo dõi 'số dòng' (hàng) của con trỏ trong vùng văn bản. ('Bức tranh lớn hơn' là phân tích cú pháp văn bản trên dòng mỗi khi một dòng mới được tạo/sửa đổi/được chọn, nếu dĩ nhiên văn bản không được dán. Điều này sẽ giúp phân tích toàn bộ văn bản không nhất thiết trong khoảng thời gian đã định).Tìm số 'dòng' (con trỏ) trong một văn bản
Có một vài bài đăng trên StackOverflow tuy nhiên không có câu trả lời cụ thể nào cho câu hỏi của tôi, hầu hết các câu hỏi dành cho vị trí con trỏ tính bằng pixel hoặc hiển thị số dòng bên cạnh vùng văn bản.
Nỗ lực của tôi ở bên dưới, nó hoạt động tốt khi bắt đầu ở dòng 1 và không rời khỏi vùng văn bản. Nó không thành công khi nhắp chuột ra khỏi vùng văn bản và quay lại nó trên một dòng khác. Nó cũng không thành công khi dán văn bản vào nó vì dòng bắt đầu không phải là 1.
Kiến thức JavaScript của tôi khá hạn chế.
<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>
Bằng cách dòng, bạn có nghĩa chèo? Cột và dòng không giống nhau khi nói văn bản. Không có cột khi các phông chữ không đơn cách được sử dụng. – Anurag
Xin lỗi, vâng, ý tôi là hàng. Tôi sẽ cập nhật bài đăng gốc của mình. – ethicalhack3r