Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Необходимо исправить функцию печатной машинки (https://javascript.ru/forum/events/35664-neobkhodimo-ispravit-funkciyu-pechatnojj-mashinki.html)

danik.js 18.02.2013 09:49

Что-то мне кажется что для css-селектора эту цифру нужно эскейпить как-то. Но не могу найти информацию. ksa, а не подкинешь ссылку на ту самую тему?

ksa 18.02.2013 10:40

Цитата:

Сообщение от danik.js
ksa, а не подкинешь ссылку на ту самую тему?

Да вот х/з по каким теперь словам её искать... :(
Я просто для себя запомнил то обсуждение и все. Там и на концорциум какой-то ссылку давали, де не противоречит правилам...

cyber 18.02.2013 18:50

а если так)
модифицировал свою старую анимацию, printIn - печать , printOut -удаление.
<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
    <div id="t"><p>asdsadasdsa</p> asdsadsadsad<div>asdasdas1</div></div>
    <script>

var Text = {
  
  printIn:function (elem,str,duration,callback){
		var i = 0, string = "", self = this;
 
    (function start(){
      
      if(i > str.length-1 )  {
        
        if(callback)callback();
        return;
      }
     
      var tag = self.Tags(str,i);
	 	
      if(tag == null) string += str[i];
      
      else {
        string+= tag.tag;
        i = tag.position;
        
      }
      
		elem.innerHTML = string;
      
       i++;
      
		setTimeout(arguments.callee,duration);  
    }());
        },
	 
	printOut:function (elem,str,duration, callback){
		
      var i = str.length, string="", self = this;
	 
      (function(){
      
      if(i < 0 ){
      
        if(callback)callback();
        return;
      }
		
        var tag = self.Tags(str,i);
	 	
      if(tag != null) i = tag.position;
     
		      elem.innerHTML = str.slice(0,i);
        i--;
      
      setTimeout(arguments.callee,duration);
		
    }());
    
    },
  
  
  Tags: function(text, num){
   
    var symb = text[num];
    var start, end, val = {}, open, close;
   
    if(symb == '<'){
    
      open = text.indexOf("<",num);
      
      start = num;
      end = text.indexOf(">",num);
      
      if(open < start) return null;
      
      val.tag = text.slice(start, end+1);
      val.position = end;
    }
    
    else if(symb == '>'){
     
       close =  text.lastIndexOf(">",num);
      
      end = text.lastIndexOf("<",num);
      
      if(end > close ) return null;
      
      val.position = end;
    
    }
    
    else return null;
  
    return val;
  }
      
     };

      
    var el = document.getElementById("t");   
    
       Text.printIn(el, el.innerHTML,50,callback);
      
      function callback(){
      Text.printOut(el, el.innerHTML,50);
      }
    </script>

  </body>
</html>


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