Ich bin ein Binary Tree Search-Visualisierungsprogramm mit JSAV-Bibliothek zu entwickeln. Das Problem ist, dass alle Knoten sofort hervorgehoben werden und ich es Schritt für Schritt ohne wiederholtes Drücken der Taste zeigen möchte.SetTimeout ausgeführt, aber keine Verzögerung
Ich habe versucht, einen Knoten zu markieren und Timeout-Funktion zu verwenden, um die Ausführung für einige Sekunden zu beenden und dann den Knoten aufzuheben und dann mit dem nächsten ausgewählten Knoten fortzufahren, jedoch gibt es überhaupt keinen Effekt. Kann mir jemand vorschlagen, was ich tun kann, um mein Programm zu modifizieren, um diese Art von Funktion zu integrieren?
Code: (Verwendet JSAV Bibliothek)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/JSAV.css" type="text/css" media="screen" title="no title" charset="utf-8" />
<title>Test Binary Tree Page</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<script src="lib/jquery.transit.js"></script>
<script src="lib/raphael.js"></script>
<script src="lib/JSAV.js"></script>
<Script src="lib/includeall.js"></Script>
<style>
.highlight
{
background-color: blue;
}
.unhighlight
{
background-color: white;
}
#av {
width: 98%;
position: relative;
}
.jsavcounter {
position: absolute;
top: 15px;
}
.jsavtree {
position: relative;
width: 500px;
height: 300px;
}
svg {
height: 600px;
}
path {
pointer-events: visible;
}
</style>
</head>
<body>
<div id="av">
</div>
<script>
var jsav=new JSAV("av");
var bt=jsav.ds.binarytree();
addNode(bt,20);
addNode(bt,5);
addNode(bt,40);
addNode(bt,50);
addNode(bt,60);
addNode(bt,70);
addNode(bt,4);
function donothing()
{
}
function searchBinarytree()
{
var value=parseInt(document.getElementById("value").value);
var test=bt.root();
while(test!=null)
{
test.addClass("highlight");
setTimeout(donothing,20000);
if(test.value()==value)
{
break ;
}
if(test.value()<=value)
{
test.toggleClass("unhighlight");
test=test.right();
}
else
{test.toggleClass("unhighlight");
test=test.left();
}
bt.layout();
}
}
</script>
<div id="valuebox">
Value to search:<input id="value" type="text"> <button type="button" onclick="searchBinarytree()"> Search</button>
</div>
</body>
</html>
Es gibt keine 'setTimeout' überall auf https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout
Etwas gefunden werden (mit Ausnahme der Frage). –
Bitte zeigen Sie Ihr Beispiel mit dem 'setTimeout', sonst können wir Ihnen nicht helfen, herauszufinden, was das Problem ist – Cirou
Nein' setTimeout' und sehr schlecht eingerückt – azro