我正在尝试在 Blazor 中复制一个简单的 JS 方法。这个想法是type out给定单词/句子/等中的每个字符。W3学校有一个很好的例子,说明了如何快速完成此操作。那么,给出他们的示例,如何在 C# 和 JS 中做同样的事情呢?
var i = 0;
var txt = 'Lorem ipsum dummy text blabla.';
var speed = 50;
function typeWriter() {
if (i < txt.length) {
document.getElementById("demo").innerHTML += txt.charAt(i);
i++;
setTimeout(typeWriter, speed);
}
}
我确信这不是一个很好的方法,因此在这里,但我认为必须有一种通过线程来做同样的事情的方法setTimeout
只是不知道如何使用兴奋剂。还尝试通过代码隐藏中的变量更新 HTML。
以下是我到目前为止所尝试过的:
HTML:
<div>
@message
</div>
Blazor 背后的代码:
using System.Threading;
namespace MyApp.Pages
{
public partial class Index
{
private static string message = "";
private static string toType = "Lorem ipsum dummy text blabla.";
private static int charIndex = 0;
protected override void OnInitialized()
{
int seconds = 5000;
var timer = new Timer(TypeMessage, null, 0, seconds);
}
protected static void TypeMessage(object o)
{
if (charIndex < toType.Length)
{
message = message + toType[charIndex];
charIndex++;
}
}
}
}
任何关于什么是最好的方法的建议将不胜感激!
尝试类似的东西
Task.Run(async() =>
{
for (int i=1; i <= Message.Length; i++)
{
TextToShow = Message.Substring(0, i);
InvokeAsync(StateHasChanged);
await Task.Delay(500);
}
}) ;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)