简体   繁体   English

如何换行或将HTML添加到此Javascript函数?

[英]How do I make a new line or add HTML to this Javascript function?

I trying to create a typewriter effect, I got everything working, but I cannot figure out how to create a new line. 我试图创建一个打字机效果,使所有工作正常,但是我不知道如何创建新行。

I've tried all three: 我已经尝试了所有三个:

\n
\r
<br />

but it just types those characters. 但是它只是键入那些字符。

Here is my javascript function: 这是我的JavaScript函数:

$.fn.Typewriter = function(opts){
    var $this = this,
        defaults = { animDelay: 50 },
        settings = $.extend(defaults, opts);
    $.each(settings.text, function(i, letter){
        setTimeout(function(){
            $this.html($this.html() + letter);
        }, settings.animDelay * i);
    });
}

Here is an example how I'm calling it: 这是我如何称呼它的一个例子:

$('#howto').Typewriter({
animDelay: 100,
text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, <br /> sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. \r Ut enim ad minim veniam, quis nostrud exercitation \n ullamco laboris nisi ut aliquip ex ea commodo consequat.'});

This is how it end up looking: 最终结果如下:

"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."

I want it to look like: 我希望它看起来像:

Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea commodo consequat.

All help is appreciated! 感谢所有帮助!

http://jsfiddle.net/9Qsku/ http://jsfiddle.net/9Qsku/

use \\n on the string and the snipplet modified this way 在字符串上使用\\ n,并以这种方式修改代码段

$.fn.Typewriter = function(opts){
var $this = this,
    defaults = { animDelay: 50 },
    settings = $.extend(defaults, opts);
$.each(settings.text, function(i, letter){
    setTimeout(function(){
        $this.html($this.html() + (letter!='\n'?letter:'<br />'));
    }, settings.animDelay * i);
});
}

<br/> should work fine: http://jsfiddle.net/7WVZX/ <br/>应该可以正常工作: http : //jsfiddle.net/7WVZX/

[Update] The issue might be that you are adding the characters one by one, instead of adding the line break as a whole. [更新]问题可能是您正在逐个添加字符,而不是整体添加换行符。 This might work better for you: 这可能更适合您:

$this.html(settings.text.substr(0,i));

The result: http://jsfiddle.net/9Qsku/1/ 结果: http : //jsfiddle.net/9Qsku/1/

尝试使用.html ...

.html('Lorem ipsum dolor sit amet, <br> consectetur adipisicing elit,');

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM