的Javascript
f64
HTML
function sortAsc($a, $b) {
return ($a[TOTCOM_METIER] < $b[TOTCOM_METIER]);
}
function sortDesc($a, $b) {
return ($a[TOTCOM_METIER] > $b[TOTCOM_METIER]);
}
function sortMyArray($array, $order = "asc") {
if($order === "desc") {
return usort($array, "sortDesc");
}
return usort($array, "sortAsc");
}
// Call it like
sortMyArray($array, "asc");
如何增加&#34;我&#34;每隔5毫秒,每次更改时都会在#demo中打印
我想看看每5ms增加一次( i )的值,然后在#演示中打印出来。
现在,由于某种原因,一旦我运行脚本,值 5000 立即打印出来,而不是每次增加500。
提前致谢。
答案 0 :(得分:2)
您可以将myFunction
更改为:
var i = 0;
function myFunction() {
var timerId = setInterval(function(){
if(i >= 5000)
{
clearInterval(timerId);
}
document.getElementById("demo").innerHTML = i;
i +=500;
}, 5);
}
答案 1 :(得分:0)
这应该有效。
var i=0;
function looper(){
setTimeout(function(){
console.log(i+" data");
i=i+500;
if(i<5000)
looper();
}, i);
}
looper();
答案 2 :(得分:0)
function myFunction() {
var i = 0;
var max = 5000;
var step = 500;
var intervalMs = 5;
var interval = setInterval(function() {
// clear interval if one step before max value
if (i >= max-step) {
clearInterval(interval);
}
// increment i by step
i+=step;
// set inner html of div
document.getElementById("demo").innerHTML = i;
}, intervalMs)
}
答案 3 :(得分:0)
您遇到的问题是没有保存对超时的引用。第二个之后的后续参数作为参数传递给回调函数。
这里我们传递i
作为第三个参数
setTimeout(fn, delay, i)
然后在callaback中我们可以访问i
,我们会在回调范围内将其重新分配给x
。
function myFunction() {
for (i = 0; i <= 5000; i = i + 500) {
setTimeout(function(x) {
document.getElementById("demo").innerHTML = x;
}, i, i);
}
}
myFunction()
&#13;
<div id="demo"></div>
&#13;
function myFunction(max, ii = 0) {
document.getElementById('demo').innerHTML = ii
if (ii < max) {
setTimeout(myFunction, 500, max, ii + 500)
}
}
myFunction(5000)
&#13;
<div id="demo"></div>
&#13;
答案 4 :(得分:0)
如果您希望代码看起来与您的代码类似,可以使用IIFE:
function myFunction() {
for (i = 0; i <= 5000;i += 500) {
(function(index) {
setTimeout(function() {
document.getElementById("demo").innerHTML = index;
}, index);
})(i);
}
}
<body onload="myFunction()">
<div id="demo"></div>
</body>
答案 5 :(得分:0)
**
<div id="demo"></div>
<script>
function myFunction() {
var i = 0;
var setClock = function() {
if (i < 5000) {
local = i;
i += 500;
setTimeout(function() {document.getElementById("demo").innerHTML = local; setTimeout(setClock, 500);},
500);
}
}
setClock();
}
**
<div id="demo"></div>
<script>
function myFunction() {
var local;
for (i = 0; i < 5000; i+= 500) {
local = i;
setTimeout((function(interval){
return function() {document.getElementById("demo").innerHTML = interval;} ;
})(local), (function(interval){return interval})(local));
}
}