Минимизация 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, время: 10:40. |