0

我需要做一个反向打字效果。问题是我也需要保留 html-tags。

http://fiddle.jshell.net/mSmm9/

var str = 'Foo is <b>not</b> equal to bar.';
var remove = false;
var i = 0;
var isTag;
var text;

(function type() {
    if (remove) {
        text = str.slice(0, --i);
        if (!text) return;
    }

    if (!remove) {
        text = str.slice(0, ++i);
        if (text === str) return;
    }

    document.body.innerHTML = text;

    var char = text.slice(-1);
    if( char === '<' ) isTag = true;
    if( char === '>' ) isTag = false;

    if (isTag) return type();
    setTimeout(type, 100);
}());

目前它只有在我们让它向前输入时才有效。如果我们向后退(类似退格),则打开/关闭括号是可见的:http: //fiddle.jshell.net/mSmm9/1/

任何想法如何解决这一问题?

我试图交换开始和结束标签<& >

if( char === '>' ) isTag = true;
if( char === '<' ) isTag = false;

没有成功!

4

1 回答 1

0

您交换<&>标签是对的,但您还需要从字符串的末尾开始并使用您的示例和JSFiddle向后移动:

var str = 'Foo is <b>not</b> equal to bar.';
var remove = false;
var i = str.length;
var isTag;
var text;

(function type() {
  if (!remove) {
      text = str.slice(0, --i);
      if (text === str) return;
  }

  if(!isTag) { document.body.innerHTML = text; }

  var char = text.slice(-1);
  if( char === '>' ) isTag = true;
  if( char === '<' ) isTag = false;

  if (isTag) return type();
  setTimeout(type, 100);
}());
于 2013-09-03T15:17:49.487 回答