如何在JavaScript中创建打字机效果,这将考虑html标记规则
How to create a typewriter effect in JavaScript THAT will take into account html tag rules?
假设我有一些来自div标记的文本,如下所示:
<div id="outPutContainer">
<div id="contentDiv" style="display:none;"> This is some cool content... </div>
</div>
现在,如果我愿意的话,我可以创建一个JavaScript函数,一次打印一个字符,它会很好地工作。以下示例。
function printSentence(inner, outer, index, speed) {
var input = document.getElementById(inner).innerHTML;
var timer = setInterval(function(){
document.getElementById(outer).innerHTML+=input.charAt(index);
index++;
if(index == sentence.length -1){
printResume(inner, outer, index+1, speed);
}else{
clearInterval(timer);
}
}, speed);
}
printSentence("contentDiv", "outPutContainer", 0, 100);
同样,上面的函数工作得很好,但假设我想考虑元素中的html标记,这将如何工作。就是一个例子
<div id="contentDiv2"> This is some cool <strong>content</strong>
<p>Paragraph of content</p>
</div>
所以理想的效果是
这是一些很酷的内容
内容段落
(打字机的效果受到了查理的启发)"我喜欢在应该表扬的地方表扬"(:Javascript打字效果
我想我可以加入一个jsFiddle,让人们更容易相处。http://jsfiddle.net/bJxe3/19/
您可以使用字符串的子字符串更新内容,而不是一次添加一个字符,直到索引。如果索引处的字符是小于号(<),只需向前跳到下一个大于号(>)。
代码段:
const printSentence = (id, sentence, speed = 50) => {
let index = 0;
let element = document.getElementById(id);
let timer = setInterval(function() {
const char = sentence[index];
if (char === '<') {
index = sentence.indexOf('>', index); // skip to greater-than
}
element.innerHTML = sentence.slice(0, index);
if (++index === sentence.length) {
clearInterval(timer);
}
}, speed);
} // printSentence
printSentence(
'contentDiv',
'This is some cool <strong>content</strong>.<p>Paragraph of content</p><ul><li>This<li>is<li>a<li>test</ul><table><tr><th>Header 1<th>Header 2<tr><td>Row 2, Col 1<td>Row 2, Col 2</table>',
50
);
body, table {font: 12px verdana;}
table {border-spacing: 0;}
td,th {border: 1px solid gray;}
th {background: #def;}
<div id="contentDiv"></div>
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何设置html元素填充的动画
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何编写HTML输入的JS内联
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 使用javascript将动态表从一个html页面打印到另一个html页
- 如何在JavaScript中创建打字机效果,这将考虑html标记规则
- 新的javascript HTML元素不遵循css规则
- 用程序从单个HTML元素中删除CSS样式规则
- HTML按钮即使在聚焦时也不会点击,CSS规则也会生效
- 将 CSS 样式规则转换为 HTML 元素(反之亦然)
- html 表单上的多个验证规则
- 找出影响IMG大小的当前CSS规则和HTML属性
- Jquery使用自定义验证规则验证任意HTML元素
- 如何使用jQuery在条件规则中设置HTML属性
- htaccess重写整个网页的html标记的规则、CSS和JS文件
- Contents ().find('html').html()不设置body的's样式规则
- jQuery验证规则不适用于嵌套的html标签
- 如何使用css规则(-webkit column-width:)获取拆分后html页面特定列的内容