Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.04.2014, 15:19
Интересующийся
Отправить личное сообщение для xcislav Посмотреть профиль Найти все сообщения от xcislav
 
Регистрация: 25.11.2013
Сообщений: 10

Минимизация 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 и ...так далее без функций?

Наверное, я на этот вопрос я ещё не готов понятно ответить:
Цитата:
r = document.getElementById('pr');
~ .. МАТЕМАТИКА .. ~
r.innerHTML =
(математика понятна - дополнять не нужно)

getElementById/innerHTML - тут действуют в жёсткой связке?
И какова природа их взаимодействия.



Мне, конечно было бы проще целиком понять программу - если бы в ней не было двух функций и вообще не было функций.

А то запутался в двух соснах - двух функциях. Да ещё этих точек не знаю.

------
Спасибо за внимание.

Последний раз редактировалось xcislav, 03.04.2014 в 16:46.
Ответить с цитированием
  #2 (permalink)  
Старый 03.04.2014, 16:12
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от xcislav Посмотреть сообщение
В JS, как вы уже увидели - не разбираюсь. НУЛЬ =)
А от нас чего надо тогда? Обучения методами телепатического внушения что ли? Какой смысл отвечать на твои вопросы, если ты ответов не поймешь?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск