【发布时间】:2021-03-21 03:12:28
【问题描述】:
我正在尝试实现打字效果,我的内容包含很多 HTML 实体。使用 .html() 的问题在于,因为它一次写出每个字母,所以它会先输入 &,然后是 l,然后是 t,然后是 ;,最后会变成 <。
HTML
<p id="src">
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if lt IE 9]> <html class="no-js lt-ie9"> <![endif]-->
</p>
<p id="typed-paragraph">
<span id="target"></span>
<span id="typed-cursor">|</span>
</p>
CSS
#src {
display: none;
}
jQuery
(function(){
var srcText = $("#src").html();
i = 0;
result = srcText[i];
setInterval(function() {
if(i == srcText.length-1) {
clearInterval(this);
return;
};
i++;
result += srcText[i].replace("\n", "<br />");
$("#target").html(result);
}, 150); // the period between every character and next one, in milliseonds.
})();
你可以在这里看到它的例子 http://jsfiddle.net/j9KF5/9/
但是如果我使用 .text() 那么我会丢失所有的换行符。
最终,我该如何解决实体问题或换行问题?
【问题讨论】:
-
尝试将 unescape() javascript 函数添加到您尝试即时渲染的 html 中,以便在开始打印之前将您的 html 字符代码替换为适当的标签。
-
@DhanasekarSM 这真的没用。
-
请在问题本身中包含一个完整的示例,而不仅仅是一个链接。 “明确地说,jsfiddle 和类似服务的链接是可以的,但问题或答案应该独立存在。任何帖子中都应该包含足够的信息,即使所有链接都指向未来的访问者,它仍然对未来的访问者有用换句话说,打破。” meta.stackexchange.com/a/151616/133242
-
FWIW,我有点喜欢这种“多行字符串”的方法:jsfiddle.net/j9KF5/13
标签: javascript jquery html css