1 Востаннє редагувалося elektryk (15.07.2018 17:08:56)

Тема: Скріпт дає ефект друкарської машинки

Евріка! Знайшов!

Знайшов скріпт, якай дає ефект друкарської машинки.
Але він має недоліки.
Рядки друкуються в одному місті. Тобто один рядок стирає попередній.
Як цьому запобігти??
Потрібно, щоб весь куплет надрукувався.

!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>masch1</title>
    <script type="text/javascript">
        var mess=new Array(
     "Что так сердце, что так сердце растревожено?",
     "Словно ветром тронуло струну… ",
     "В Украине много партий создано, ",
     "Я создам тебе, создам ещё одну. ");

    var size=32;
    var textcolor="gold";
    var lastcolor="red";
    var pause=1500;//время задержки между выводом строк.
    var speed=70;//время задержки между появлением символов;
    var i=i_str=0;
    var msg=msgpre=msgafter="";

    function get_text() {
     msgpre=mess[i].substring(0,i_str-1);//возвращает подстроку, начиная с позиции indexA 
     msgafter=mess[i].substring(i_str-1,i_str);//до, но не включая indexB.
     msg="<span style='position:relative;color:"+textcolor+";font-size:"+size+"px;'>";
     msg+=msgpre+"<font color='"+lastcolor+"'>"+msgafter+"</font></span>";
    }

    function go() {
    if (i_str<=mess[i].length-1) {
     i_str++;
     get_text();
     if (document.all) {typewriter.innerHTML=msg;}
     else if (document.layers) {
      document.typewriter.document.write(msg);
      document.typewriter.document.close();
     }
     else {document.getElementById("typewriter").innerHTML=msg;}
     var timer=setTimeout("go()", speed);
    }
    else {
     clearTimeout(timer);
     var timer=setTimeout("changemess()", pause);
    }
    }

    function changemess() {
     i++;
     i_str=0;
     if (i>mess.length-1) {i=0;}
     go();
    }
    </script>
</head>
<body>
<h1>maschinka1</h1>
    <p id="typewriter"></p>
    <script type="text/javascript">
     go();
    </script>

</body>
</html>

2

Re: Скріпт дає ефект друкарської машинки

Може там десь брейки поставить, та й увесь хвець?? Під брейками я розумію <br>.

3

Re: Скріпт дає ефект друкарської машинки

Ні, br не допоможе. Треба , мабуть, на кожний рядок створювати новий span, а не писати в той, що уже є. Детально не дивився.

4

Re: Скріпт дає ефект друкарської машинки

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>masch1</title>
    <script type="text/javascript">
        var mess=new Array(
            "Щось так сердце, щось так сердце щемить?",
            "Ніби вітром зачепило струну… ",
            "В Україні багато партій створено, ",
            "Я створю тобі, створю ще одну. ");

        var size=32;
        var textcolor="gold";
        var lastcolor="red";
        var pause=1500;//час затримки між виводом рядків
        var speed=70;//час затримики між виводом символів
        var i=i_str=0;
        var msg=msgpre=msgafter="";

        function get_text() {
            msgpre=mess[i].substring(0,i_str-1);//повертає частину рядка, починаючи з позиції indexA
            msgafter=mess[i].substring(i_str-1,i_str);//до, але не включаючи indexB.
            msg="<span style='position:relative;color:"+textcolor+";font-size:"+size+"px;'>";
            msg+=msgpre+"<font color='"+lastcolor+"'>"+msgafter+"</font></span>";
        }

        function go() {
            if (i_str<=mess[i].length-1) {
                i_str++;
                get_text();
                if (document.all) {typewriter.innerHTML=msg;}
                else if (document.layers) {
                    document.typewriter.document.write(msg);
                    document.typewriter.document.close();
                }
                else {document.getElementById("typewriter").innerHTML=msg;}
                var timer=setTimeout("go()", speed);
            }
            else {
                //Клонує рядок
                var line = document.getElementById("typewriter");
                var cln = line.cloneNode(true);
                cln.id = "typewriter"+i;
                line.parentElement.insertBefore(cln, line);
                //і очищуємо оригінальний щоб писати в ньому заново
                line.innerHTML= "";
                clearTimeout(timer);
                var timer=setTimeout("changemess()", pause);
            }
        }

        function changemess() {
            i++;
            i_str=0;
            if (i>mess.length-1) {
                i=0;
                //ми дойшли до кінця тепер треба очитити всі створені рядки
                for (j = 0; j< mess.length; j++) {
                    var line = document.getElementById("typewriter");
                    line.parentElement.removeChild(document.getElementById("typewriter"+j));
                }
            }
            go();
        }
    </script>
</head>
<body>
<h1>Вірш</h1>
<p id="typewriter"></p>
<script type="text/javascript">
    go();
</script>

</body>
</html>
Подякували: NaharD1

5

Re: Скріпт дає ефект друкарської машинки

Щиро дякую!!А можна, щоб куплет не повторювався?? Досить одного разу. Але, щоб довгенько повисів.

6

Re: Скріпт дає ефект друкарської машинки

Там же ж коментарів всюди.

if (i<=mess.length-1) {go();}

7 Востаннє редагувалося elektryk (20.07.2018 16:54:03)

Re: Скріпт дає ефект друкарської машинки

А ось ще одна головоломка. Код напрочуд короткий, а задача та сама: зробити вивід куплетом.

CTYPE html>
<html>
<head>
<title>Печатная машинка</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<style type="text/css">
<!--.style1 {font-size: 12px}-->
</style>
<script>
<!-- web-mastery.info  -->
    var source,dest,len,now=0,delay=100,letters=1;
    function show_text(){
        source = document.getElementById("pageTextSource");
        dest = document.getElementById("pageText");
        len = source.innerHTML.length;
        show();
    }
    function show(){
        dest.innerHTML += source.innerHTML.substr(now,letters);
        now+=letters;
        if(now<len)
            setTimeout("show()",delay);
    }
</script>
</head>
<body bgcolor="#FAFDFF" onload="show_text();">
<p style="display:none" id="pageTextSource">
"Щось так сердце, щось так сердце щемить? ",
"Ніби вітром зачепило струну… ",
"В Україні багато партій створено, ",
"Я створю тобі, створю ще одну. ");</p>
<p id="pageText"></p>
</body>
</html>

8

Re: Скріпт дає ефект друкарської машинки

Vo_Vik написав:

Там же ж коментарів всюди.

if (i<=mess.length-1) {go();}

А куди саме її тулити?? Бо я куди не намагався - не виходить...

9

Re: Скріпт дає ефект друкарської машинки

Не можу перебудувати своє мислення під оте об'єктне програмування. Який москаль його придумав?? Сволота.
Допоможіть реалізувати наступний алгоритм.
Задаєм строковий масив array;
Задаєм темп виводу символів tmp;
Задаєм паузу після виводу строчки ps;
Задаєм паузу після виводу всього масиву pps;
Визначаем число строчок n в масиві .
  FOR i=1 TO n {
    Визначаєм кількість символів m в строчці;
    Включаєм звук друкарської машинки;
      FOR j=1 TO m {
         Друкуємо символи[j] ;}
      Відключаємо звук друку;
      Включаємо звук повернення каретки;} /*зверніть увагу тривалість цього звуку повинна дорівнювати травалості паузи ps*/
      Пауза pps;
      Витираємо надруковане END

Скріпти, які я знайшов мене не влаштовують своєю москальскістю.

10

Re: Скріпт дає ефект друкарської машинки

elektryk, що саме не виходить? Приведіть якийсь свій код (створити массив і т.д.), варіант "ви напишіть мені все від і до" якось не дуже.. Потратьте таки трохи часу на вивчення яваскріпт, це не С++ чи Асм, багато часу не піде (в тому обємі, що вам треба), і відпаде 90% дурних запитаннь.

На рахунок москалізмів, то

Прихований текст

у вас вже ті москалі весь мозок зїли, бачу. Причому тут вони взагалі? Хекс редактор москалі писали, яваскріпт москальский, ООП від москаля пішло.. "А вчора у ванні мені приснився дивний сон, неначе я пірнув у море, і воно перетворилося на москалів, риби, водорості, медузи, все москальске, навіть небо, навіть Аллах" (с).

Подякували: ostap34PHP, /KIT\2

11 Востаннє редагувалося elektryk (04.08.2018 23:11:33)

Re: Скріпт дає ефект друкарської машинки

Єсть!! Слухаюсь!! Я зіткнувся з дивними (москальськими) умовами if (document.all) та if (document.layers). Мене спантеличують властивості документу. В довідниках вони якось мутно описані. Поясніть будь-ласка дохідливо.

morgot написав:

elektryk, що саме не виходить? Приведіть якийсь свій код (створити массив і т.д.), варіант "ви напишіть мені все від і до" якось не дуже.. Потратьте таки трохи часу на вивчення яваскріпт, це не С++ чи Асм, багато часу не піде (в тому обємі, що вам треба), і відпаде 90% дурних запитаннь.

12

Re: Скріпт дає ефект друкарської машинки

elektryk написав:

Я зіткнувся з дивними умовами if (document.all) та if (document.layers).

Це не стандартні властивості, вони колись давно використовувалися в IE, і вони не підтримуються. W3C не одобрив.

elektryk написав:

В довідниках вони якось мутно описані.

Телепатично бачу, що ваші довідники - це макулатура 19xx-го року видання.

13

Re: Скріпт дає ефект друкарської машинки

leofun01 написав:

це макулатура 19xx-го року виданн

Головне, що не москальські.

14 Востаннє редагувалося elektryk (05.08.2018 21:23:55)

Re: Скріпт дає ефект друкарської машинки

leofun01 написав:

Це не стандартні властивості, вони колись давно використовувалися в IE, і вони не підтримуються. W3C не одобряє.

Телепатично бачу, що ваші довідники - це макулатура 19xx-го року видання.

Я їх викинув до бісової матері, а код працює!!
Я спростив код як міг, та не можу зрозуміти блок  else. Навіщо створювати копію рядка, а потім його очищати??
Прохання не картати мене за російську мову. Я виправлюсь.

!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Куплет не щезає</title>
    <script type="text/javascript">
        var mess=new Array(
             "Что так сердце, что так сердце растревожено? ",
             "Словно ветром тронуло струну… ",
             "В Украине много партий создано, ",
             "Я создам тебе, создам ещё одну. ",
             "В Украине много партий создано, ",
             "Я создам тебе, создам ещё одну. ");
 
        var pause=1500;
        var speed=70;
        var i=0;        // указывает номер строки 
        var istr=0;        // указывает позицию символа в строке
        var msgpre="";    // символ в этой позиции 
        function go() {
            if (istr<=mess[i].length-1) {  // если позиция символа меньше-равна длины строки
                msgpre=mess[i].substring(0,istr);    // символ в позиции istr
                istr++;
                msg="";            // сначала пустая строка
                msg+=msgpre;    // потом заполняется символами 
                document.getElementById("priemTxt").innerHTML=msg;//заполняет блок <p id="priemTxt"></p> значениями msg
                var timer = setTimeout("go()", speed);
            }
            else {
                var line = document.getElementById("priemTxt"); // шесть раз выдаёт line =<p id="priemTxt"></p>
                var cln = line.cloneNode(true);//выдеёт строки, например <p id="priemTxt5">Я создам тебе, создам ещё одну.</p>
                cln.id = "priemTxt"+i;    // выдаёт от priemTxt0 до priemTxt0
                //console.log(cln.id);
                line.parentElement.insertBefore(cln, line);
                //line.innerHTML = "";//очищает 
                var timer=setTimeout("changemess()", pause);
            }
        }
         function changemess() {
            i++;
            istr=0;
            go();
        }
    </script>
</head>
<body >
<h1>Посвящение</h1>
<p id="priemTxt"></p>
<script type="text/javascript">
    go();
</script>
 
</body>
</html>

15

Re: Скріпт дає ефект друкарської машинки

morgot написав:

elektryk, що саме не виходить? Приведіть якийсь свій код (створити массив і т.д.), варіант "ви напишіть мені все від і до" якось не дуже.. Потратьте таки трохи часу на вивчення яваскріпт, це не С++ чи Асм, багато часу не піде (в тому обємі, що вам треба), і відпаде 90% дурних запитаннь.

Є масив mass, що складається з n рядків.
Довжину рядка я можу визначити mess[і].length. А як визначити кількість n рядків в куплеті??

16

Re: Скріпт дає ефект друкарської машинки

регулярками

17 Востаннє редагувалося elektryk (11.08.2018 01:20:06)

Re: Скріпт дає ефект друкарської машинки

FakiNyan написав:

регулярками

Я пішов іншим шляхом.

!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Куплет stop</title>
    <script type="text/javascript">
        var mess=new Array(
             "Что так сердце, что так сердце растревожено? ",
             "Словно ветром тронуло струну… ",
             "В Украине много партий создано, ",
             "Я создам тебе, создам ещё одну. ",
             "В Украине много партий создано, ",
             "Я создам тебе, создам ещё одну. ");
        
        var pause=1500;
        var speed=70;
        var i=0;        // указывает номер строки 
        var istr=0;        // указывает позицию символа в строке
        var msgpre="";    //указывает символ в этой позиции 
        for(i=0;i<mess.length;i++){        
                var strng=mess[i].split('');
                console.log(strng);
            }
</script>
</head>
<body >
<h3>Куплет stop</h3>
<p id="priemTxt"></p>
</body>
</html>

Код видає в консоль окремі символи. А як їх вивести на екран??

18

Re: Скріпт дає ефект друкарської машинки

Хлопчики, допоможіть будь-ласка, бо я весь вимахався!

19 Востаннє редагувалося elektryk (15.08.2018 21:41:43)

Re: Скріпт дає ефект друкарської машинки

morgot написав:

elektryk, що саме не виходить? Приведіть якийсь свій код (створити массив і т.д.), варіант "ви напишіть мені все від і до" якось не дуже.. Потратьте таки трохи часу на вивчення яваскріпт, це не С++ чи Асм, багато часу не піде (в тому обємі, що вам треба), і відпаде 90% дурних запитаннь.

На рахунок москалізмів, то

Прихований текст

у вас вже ті москалі весь мозок зїли, бачу. Причому тут вони взагалі? Хекс редактор москалі писали, яваскріпт москальский, ООП від москаля пішло.. "А вчора у ванні мені приснився дивний сон, неначе я пірнув у море, і воно перетворилося на москалів, риби, водорості, медузи, все москальске, навіть небо, навіть Аллах" (с).

Я вже спростив код до краю. Але він чомусь не працює. Чому??

<script type="text/javascript">
    var mess=("Что так сердце, что так сердце растревожено?");
    var i = 0;
    var istr = 0;
    var strng;
    var speed = 100;
    var strng = mess.split(' ');
    function slova(i) {            
        document.getElementById("priemTxt").innerHTML += strng[i] + " ";
        i++;
    }            
    istr = i;
    if(istr < strng.length){
        var timer = setTimeout("slova(istr)", speed);
    }
</script>