Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Почему моя функция "упрощённый вариант" не работает с другими DOM-элементами? (https://javascript.ru/forum/events/33022-pochemu-moya-funkciya-uproshhjonnyjj-variant-ne-rabotaet-s-drugimi-dom-ehlementami.html)

JavaScriptProgrammer 07.11.2012 22:06

Почему моя функция "упрощённый вариант" не работает с другими DOM-элементами?
 
Работает только с одной span. Cо второй span не работает. Почему?
Переменные обнулял. Всё равно не рабоает.


<html>
<title></title>
<head>
<span id="span1"></span>
<span id="span2"></span>
</head>
<body>
<script src="script.js"></script>
<script>
printContent("span1", str);
printContent("span2", str);
//document.getElementById("span1").style.width = document.body.clientWidth;
</script>
</body>
</html>

var str = "Content1. Content1.Content1.Content1.Content1.Content1.";
var i = 0;
var l = str.length;
function printContent(span, string){
        id = window.setInterval(           
        function(){
        document.getElementById(span).innerHTML += string[i++];
        if(i == l){
              window.clearInterval(id);
              i = 0;
              l = 0;    
        }       
        },
        50                  
                   );
}

JavaScriptProgrammer 07.11.2012 22:43

убрал l = 0;
работает только с span1, со span2 не работает.

Подскажите как исправить код, чтобы работала с любой span.

JavaScriptProgrammer 08.11.2012 01:10

Почему вызывая обе функции по очерёдно они работают одновременно. А они должны работать по очереди. Одна заканчивает работу, начинает работу вторая. Я же их вызваю по очереди, а они работают одновременно. Почему?


<html>
<title></title>
<head>
<span id="span1"></span>
<br></br>
<span id="span2"></span>
</head>
<body>
<script src="script.js"></script>
<script>
printContent("span1", str1);
printContent("span2", str2);
//document.getElementById("span1").style.width = document.body.clientWidth;
</script>
</body>
</html>


var str1 = "Text1";
var str2 = "Text2";

function printContent(id, string){
        
        var element = document.getElementById(id);        
        var counter = 0;
        var interval = window.setInterval(
                                             
        function(){      
          element.innerHTML += string[counter++];
     
          if(counter == string.length){
                window.clearInterval(interval); 
          }      
         
        },   
        50  
                           );        
}

JavaScriptProgrammer 08.11.2012 06:29

как изменить код, чтобы setInterval работали так:
printContent 1 завершает свою работу.
только тогда printContent 2 начинает свою работу.
span2 начинает только после того как span1 закончила.
таймеры работают неодновременно, а по-очереди. но 2 таймер включается только тогда, когда первый выключился.

dmitriymar 08.11.2012 06:40

Менять полностью структуру. Таймер один вообще один для небольших промежутков времени,а иначе работа таймеров непредсказуема. Точнее предсказуемо что работать не будет

JavaScriptProgrammer 08.11.2012 07:08

код плиз.


Часовой пояс GMT +3, время: 07:47.