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: Евріка!! Знайшов!!

А як JS відноситься до Джави?

3

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

Поняття не маю. Та це тут ні до чого.

Подякували: NaharD1

4

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

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

5

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

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

6

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

7

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

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

8

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

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

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

9 Востаннє редагувалося 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>

10

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

Vo_Vik написав:

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

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

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

11

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

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

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

12

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

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

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

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

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

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

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

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

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

morgot написав:

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

14

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

elektryk написав:

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

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

elektryk написав:

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

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

15

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

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

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

16 Востаннє редагувалося 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>

17

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

morgot написав:

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

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

18

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

регулярками

19 Востаннє редагувалося 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>

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

20

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

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