Javascript.RU

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

Избавить код от функций (для вникания ибо знания JS≈0)
Насколько я понимаю, эта программа (которая получилась) начинает свой цикл во время нажатия первой клавиши и заканчивается после каждого последнего нажатия. Время начинает свой отсчёт с начала первого нажатия и длится столько времени ввода, пока человек решает остановиться, и раз остановка после каждого следующего ввода фиксируется как "время окончания". Если нажата мышь в нижнем поле после этого - тогда показывается результат ("время окончания" - время начала цикла).
<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...

Последний раз редактировалось xcislav, 01.04.2014 в 01:04. Причина: форматирование
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посоветуйте как улучшить код для работы с history api [ jquery + js + history api ] Geo Ваши сайты и скрипты 0 12.01.2014 00:41
поиск классов внутри тега yozuul jQuery 24 14.06.2013 22:00
Предложение представить код с setInterval для n - но более двух DOM-єлементов JavaScriptProgrammer Events/DOM/Window 1 09.11.2012 08:09
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53