Verzeichnis
Verzeichnis
Schreibmaschine mit zufälliger Geschwindigkeit Wirkung
Wirkung
Code
Referenziertes Wissen Klicken Sie auf
Timer verwenden, um Thread auszulösen
Ereignis verwenden, um Thread auszulösen
Thread
Zufallszahl
Schnelllink
HTML-Teil
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>typeWriter</title> <style type="text/css"> h2,h5,#tooltipMsg,p{ white-space: nowrap; } td{ border: 1px solid #ccc; height: 50px; text-align: center; font-size: 10pt; padding: 2px; } </style></head><body> <h2>实现打字机效果</h2> <p id="typeWriterEffect"></p> <p id="typeWriterEffect2"></p> <script type="text/javascript" src="typeWriter.js"></script></body></html>
JS-Teil
Wissenspunkte zitiert vonwindow.onload=function(){ var twArr = [],//打字的数据库队列 twing = false,//用于判断打字机的线程是否开启 twID = [],//打字机线程ID twTime = 10,//用于定时调用的时间 obj1 = document.getElementById("typeWriterEffect"), obj2 = document.getElementById("typeWriterEffect2"), twEffect = function(e,str){//添加显示的元素 twArr.push({ "context":e,//目标元素上下文 "str":str,//显示的元素 "lening":0,//截取的进度 "maxL":str.length//最大的进度 }) }, closeTw = function(){//关闭定时调用 clearTimeout(twID);//关闭线程 twing = true; }, twUi = function(){//定时调用 var i = 0, L = twArr.length, eing = null; for (var i = 0; i < L; i++) { eing = twArr[i]//效果同时加载多对象数组 eing.lening++; if (eing.lening>eing.maxL) {//不设置关闭线程则打字效果循环 eing.lening = 0; } eing.context.innerHTML = eing.str.substring(0,eing.lening)+"_"; } var num = Math.floor(Math.random()*50+1);//1-50个随机数 console.log(num); twID = setTimeout(twUi,num*twTime);//开启线程 if(twID==eing.maxL){//到达最后关闭线程 closeTw(); } }, //开启定时调用,参数为设置定时调用的时间 startTw = function (twTime) { if (!twing) {//如果没有开启才开启 twTime = twTime; twUi();//开始定时调用 } }; //设置内容对象数组 twEffect(obj1,"这就是打字机效果,打字速度随机哦!!!!!"); //开始调用线程 startTw(twTime); }
JS ist Single-Threaded (Single-Threaded) und Asynchron (asynchron), aber sie stehen nicht im Widerspruch zueinander, js Host-Umgebung (Zum Beispiel, Browser, Knoten) sind Multithread-fähig, und die Host-Umgebung sorgt dafür, dass js in gewisser Weise asynchrone Eigenschaften haben.
setTimeout(function(){ console.log(time is out); },50);
Einige Leute werden nach dem Unterschied zwischen den Timern setTimeout
und setinterval
fragen:
setTimeout (Tabellenverzögerungszeit) wird ausgeführt, nachdem die angegebene Zeit nach dem Laden verzögert wurdeFührt den Ausdruck nur einmal aus ,
und setInterval (Tabelleninteraktionszeit) sind unterschiedlich. Nach dem Laden wird der Ausdruck zu jedem angegebenen Zeitpunkt ausgeführt
(Nachteile: hohe Kopplung)
function f1(callback){setTimeout(function(){ // f1 的代码 callback(); },0); } f1(f2);
(Nachteile: Sie können verschiedene Ereignisse binden, verschiedene Rückruffunktionen implementieren. Wenn Sie diese Methode zu oft anwenden, wird dies nicht der Fall sein förderlich für das Lesen des Programms)
$f1.on('custom',f2); //这里绑定事件以jQuery写法为例function f1(){setTimeout(function(){ // f1的代码 $f1.trigger('custom'); },0); }
Math.random()
Nehmen Sie eine Zufallszahl von 0-1
Ähnliches Erweiterungsbeispiel:
Math.random()*10 nimmt eine Zufallszahl Zahl von 0-10 (einschließlich vieler Dezimalstellen)
Math.random()*10+1 nimmt eine Zufallszahl von 1-10 an
Math.random() *10+2 nimmt 2-10 Zufallszahlen an Zahlen
Math.random()*899+100 benötigt 100-999 Zufallszahlen
Häufig unter ihnen verwendet:Math.floor()
Nur den ganzzahligen Teil der Zufallszahl nehmen
Verwandter Artikel:
Vollständiges Beispiel für den von JS implementierten Schreibmaschineneffekt
Beispielcode für den von JS implementierten Schreibmaschineneffekt
Zugehöriges Video:
Praktisches Video-Tutorial zur Erzielung eines Vollbild-Umschalteffekts
Das obige ist der detaillierte Inhalt vonDer Fall des JS-Threads: Erkennen des Schreibmaschineneffekts der zufälligen Geschwindigkeit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!