Насколько я понимаю, эта программа (которая получилась) начинает свой цикл во время нажатия первой клавиши и заканчивается после каждого последнего нажатия. Время начинает свой отсчёт с начала первого нажатия и длится столько времени ввода, пока человек решает остановиться, и раз остановка после каждого следующего ввода фиксируется как "время окончания". Если нажата мышь в нижнем поле после этого - тогда показывается результат ("время окончания" - время начала цикла).
<script type="text/javascript">
var timing = {
st: null,
en: null,
tx: null
}; // start, end, textbox
function initpr() {
timing.tx = document.getElementById('prin');
var tx = timing.tx;
tx.onkeypress = function () {
timing.st = timing.en = new Date();
timing.tx.onkeypress = function (en) {
if (!en) en = event;
timing.en = new Date();
}
}
}
function clc() {
r = document.getElementById('resultpr'); //результат
deltams = timing.en.getTime() - timing.st.getTime();
chars = timing.tx.value.length;
cpms = chars / deltams;
snippets = [chars, " chars (in ", deltams, " ms): ", cpms, " cpms"];
r.innerHTML = snippets.join("");
initpr();
}
</script>
<form name="foo" onsubmit="return false;">
<textarea id="prin"></textarea>
<br />
<input id="btnclc" />
<span id="resultpr"></span>
</form>
<script type="text/javascript">
document.getElementById('btnclc').onclick = clc;
initpr();
</script>
Код рабочий.
http://lanother.tk/rcc.php
Обкарнал до минимума (lanother.tk/) для максимума понимания в минималистичности.
Было 5 функций (lanother.tk/rc.php) сейчас стало только 2 с именем. Но всё равно, нижняя функция clc вызывает в самом конце себя верхнюю initpr. И вот в ней загвоздка: если поиск initpr, то получается что их три а я хочу код мотолит и последняя функция фактически уже станит вся программа.
В итоге:
<script>
alert( my program ); //no functions
</script>
<form>
</form>
end.
Алерт это то что я знаю из начала каждой книжки - в принципе для меня это JS (то есть джаваскрипт программа).
По onClick вызывалось бы всё тело программы. Я бы его разбил на строчки и сделал бы ещё компактней.
(Я слабо программировал на языках и не доходил до функций, например на асме саброутины (хоть я его и больше знаю) .. до них надо было ещё дожить
).
Хотя бы может кто знает, как убрать 3 функции одна-рыбка-в-другой. Очень угнетает. Внутри initpr ...=function...