使用javascript让文本按字符显示
Using javascript to let text appear per character
好的,所以对于学校的一个项目,我们想制作一个简单的基于web的应用程序。我正在使用cordova,但我在使用jquery时遇到了一些困难。这个想法是制作一个类似控制台的动画来显示文本,这样文本就会按每个字符显示。
这是我的index.html
<!DOCTYPE html>
<html>
<head>
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
<link rel="stylesheet" type="text/css" href"index.css" />
<link rel="stylesheet" type="text/css" href"css/jquery.mobile-1.4.5.css" />
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript" src="js/jquery-1.11.3.js"></script>
<script type="text/javascript" src="js/jquery.mobile-1.4.5.js"></script>
<script language="javascript">
$(document).ready(function() {
var text = "example text";
for (i = 0; i < text.length; i++) {
setTimeout(function(){
$("#text").text(text.substr(0, i+1));
}, i * 500);
}
});
</script>
<title>TEST</title>
</head>
<body>
<div data-role="page" data-theme="a" id="Page1">
<div data-role="content" data-theme="a" id="Page1_Content" >
<label id="text"></label>
</div>
</div>
</body>
</html>
因此,我使用了一些javascript代码来循环遍历示例文本的每个字符,并将标签中的文本更改为示例文本的子字符串。
但当我在设备上运行这个程序时,文本会立即出现。
编辑:
所以我把它改成了Canvas的代码,但现在文本根本没有出现。我很可能漏掉了分号什么的,现在感觉很愚蠢:(
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
<link rel="stylesheet" type="text/css" href="css/index.css">
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript" src="js/jquery-1.11.3.js"></script>
<script type="text/javascript" src="js/jquery.mobile-1.4.5.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var text = "example text";
var i = 0;
var consoleTyper = setInterval(function () {
if (i != text.length) {
i += 1;
$("#text").text(text.substr(0, i));
}
else
{
clearInterval(consoleTyper);
}
console.log(i);
}, 50);
});
</script>
<title>B.O.X.</title>
</head>
<body>
<div id="text"></div>
</body>
</html>
jsFiddle:https://jsfiddle.net/35j178ho/
javascript
$(document).ready(function () {
var text = "example text";
var i = 0;
var consoleTyper = setInterval(function () {
if (i != text.length) {
i += 1;
$("#text").text(text.substr(0, i));
}
else
{
clearInterval(consoleTyper);
}
console.log(i);
}, 50);
});
我确实将您的代码复制到了jsFiddle中,但它对我不起作用,所以我更新了代码并使其起作用:)。我在上面提供了一个jsFiddle。基本上,我所做的就是创建一个setInterval
,并将其存储在一个变量中,这样,一旦所有文本都显示出来,我们就可以清除setInterval
,使其不再运行。
纯javascript解决方案
jsFiddle:https://jsfiddle.net/7abvrbxu/
$(document).ready(function () {
var text = "example text";
var i = 0;
var consoleTyper = setInterval(function () {
if (i != text.length) {
i += 1;
document.getElementById("text").innerHTML = text.substr(0, i);
}
else
{
clearInterval(consoleTyper);
}
console.log(i);
}, 50);
});
您可以尝试使用setInterval
而不是setTimeout
。脚本看起来像这样:
$(document).ready(function() {
var text = "example text";
var duration = text.length;
var counter = 0;
var intervalId = null;
var interval = 500;
intervalId = setInterval(function(){$("#text").text(text.substr(0, counter+1));counter++;}, interval);
setTimeout(function(){clearInterval(intervalId);}, duration * interval);
});
编辑:
你的问题在这篇文章中有详细的解释:循环中的setTimeout不会打印连续的值
这样,您也可以尝试setTimeout
的方法。
相关文章:
- 根据页面的位置突出显示文本中的字符
- 单元格的工具提示或标题不显示超过2000个字符
- 附加“;显示更多“;仅当满足设定的字符数时,链接到截断的段落
- 如何显示字符串中最多 200 个字符
- 如何不显示/过滤特殊字符?(CSS或Javascript)
- 如何使用javascript在输入元素中显示特殊字符
- 尊重“; 〃;从HTML显示中的API响应返回的换行符(和特殊字符)
- 在粘贴到文本字段Jquery时检查并突出显示不支持的特殊字符
- HTML 标签以 ASCII 字符显示
- Â字符显示在html中的每个$字符之前
- JavaScript-如何逐个字符显示文本
- 使用javascript让文本按字符显示
- â -字符显示代替em破折号(-)
- 如何用特殊字符显示来自资源的消息
- 为什么非ascii字符显示为奇怪的符号
- 高字符显示错误的月份在日期图表
- JavaScript/PHP页面字符显示错误
- 如何避免在文本框中键入的特定字符显示使用JQuery/Javascript
- 特殊字符显示在Python Dict构建的表单AWS中,并通过django视图传递给js
- 表单上的编码问题;一些特殊字符显示为 ASCII 代码