Минимизация js программы 20 строк 500 символов. Считает скорость набора.
Тест можно наблюдать
lanother.tk/ccc.php
<form>
<textarea id="tb"></textarea>
<p id="pr" />
<input onclick="clc();" />
</form>
<script>
function initpr() {
bx = document.getElementById('tb');
bx.onkeypress = function () {
ts = te = new Date();
bx.onkeypress = function (en) {
te = new Date();
}
}
}
function clc() {
r = document.getElementById('pr');
deltams = te.getTime() - ts.getTime();
chars = bx.value.length;
cpms = chars / deltams;
r.innerHTML = chars+" chars (in "+deltams+" ms): "+cpms+" cpms";
initpr();
}
initpr();
</script>
Как только набрано в боксе и после того, как в нижний бокс щёлкнута мышь, программа начинает исполнение: Выполняется фукнция clc() , где в конце функция initpr() - АТТАЧИТ bx к textarea, инициализируется дата start/end форматом new Date() и bx.onkeypress = тут же обновляет te (концовку) новой датой new Date () *старая ts (старт) остаётся. Вопрос №1: Почему initpr(); исполняется дважды - первый раз после всего clc() и второй до всего - сразу при загрузке страницы. (может быть тут есть излишество?) И как убрать это двойное излишество? #догадка# может быть, это связано с минимально двумя клавишами нажатия в textarea. (Хотя, я думаю, что двухклавишный минимум - внутри функции initpr) Вопрос №2: Можно упростить initpr? (убрать function):
function initpr() {
bx = document.getElementById('tb');
bx.onkeypress = function () {
ts = te = new Date();
bx.onkeypress = function (en) {
te = new Date();
}
}
}
Тут: 2 function, 2 onkeypress, две new Date() - и, собственно, внутренние циклы (структуры). Остальные вопросы (ввод и вывод данных): C .innerHTML вроди бы разобрался - он выводит. document.getElementById() - находит и берёт куда-то данные
bx = document.getElementById('tb');
bx.onkeypress = function () {
Данные попали в bx. Тогда уж можно ли написать что-то вроде: function initpr() { document.getElementById('tb').onkeypress = function () { ts = te = new Date(); bx и ...так далее без функций? Наверное, я на этот вопрос я ещё не готов понятно ответить: Цитата:
getElementById/innerHTML - тут действуют в жёсткой связке? И какова природа их взаимодействия. Мне, конечно было бы проще целиком понять программу - если бы в ней не было двух функций и вообще не было функций. А то запутался в двух соснах - двух функциях. Да ещё этих точек не знаю. ------ Спасибо за внимание. |
Цитата:
|
| Часовой пояс GMT +3, время: 21:25. |