Javascript 为什么date()之间的差异是NaN? var启动; 函数shapepper(){ document.getElementById(“形状”).style.display=“块”; var start=new Date().getTime(); } 函数延迟(){ setTimeout(shapepper,Math.random()*2000); } 延迟(); document.getElementById(“形状”).onclick=function(){ document.getElementById(“形状”).style.display=“无”; 变量位置=数学地板(数学随机()*500); document.getElementById(“shapes”).style.left=位置+“px”; document.getElementById(“shapes”).style.right=position+“px”; document.getElementById(“shapes”).style.top=position+“px”; document.getElementById(“shapes”).style.bottom=position+“px”; var end=new Date().getTime(); var时间=结束-开始; 时间/=1000; document.getElementById(“time”).innerHTML=time+“s”; 延迟(); }

Javascript 为什么date()之间的差异是NaN? var启动; 函数shapepper(){ document.getElementById(“形状”).style.display=“块”; var start=new Date().getTime(); } 函数延迟(){ setTimeout(shapepper,Math.random()*2000); } 延迟(); document.getElementById(“形状”).onclick=function(){ document.getElementById(“形状”).style.display=“无”; 变量位置=数学地板(数学随机()*500); document.getElementById(“shapes”).style.left=位置+“px”; document.getElementById(“shapes”).style.right=position+“px”; document.getElementById(“shapes”).style.top=position+“px”; document.getElementById(“shapes”).style.bottom=position+“px”; var end=new Date().getTime(); var时间=结束-开始; 时间/=1000; document.getElementById(“time”).innerHTML=time+“s”; 延迟(); },javascript,Javascript,在这段代码中,我希望date()函数返回一个特定的整数值。 因为当我们减去两个Date()函数时,我们必须得到整数值。这是一个范围问题。如果在函数中使用var,则该变量将仅存在于该函数的范围内 所以你能做的是: <script> var start; function shapeAppear() { document.getElementById("shapes").style.display = "block";

在这段代码中,我希望
date()
函数返回一个特定的整数值。
因为当我们减去两个
Date()
函数时,我们必须得到整数值。

这是一个范围问题。如果在
函数中使用
var
,则该变量将仅存在于该函数的范围内

所以你能做的是:

    <script>
        var start;
        function shapeAppear() {
            document.getElementById("shapes").style.display = "block";
            var start = new Date().getTime();           

        }
        function delay() {
            setTimeout(shapeAppear,Math.random() *2000);
        }
        delay();

    document.getElementById("shapes").onclick = function() {
    document.getElementById("shapes").style.display = "none";   
    var position = Math.floor(Math.random() * 500);
    document.getElementById("shapes").style.left = position + "px";
    document.getElementById("shapes").style.right = position + "px";
    document.getElementById("shapes").style.top = position + "px";
    document.getElementById("shapes").style.bottom = position + "px";
    var end = new Date().getTime();
    var time =  end - start;
    time /= 1000;
    document.getElementById("time").innerHTML = time + "s";
    delay();
}   
    </script>
通过删除
shapeAppear
函数中的
var
,您正在更新函数外部创建的
var

除此之外,如前所述,您在
shapepper
之前调用
delay
,这意味着调用
delay
时未定义
start


希望这是有意义的。

老实说,我不明白你的问题,但看起来你在计算做手术所需的时间。。。如果这是您的用例,我会看一看,在我看来,start是在设置之前使用的。您从不为第一行声明的
start
变量赋值。只有在第4行声明的
start
变量使用
var
时,另一个变量被分配了一个永远不会读取的值,因为它会立即退出范围。是的,但是shapeAppear在使用start之后才被调用,所以在设置之前仍然使用start。在这种情况下,应该是这样的“…该变量也将存在于该函数的范围内…”。两个
start
变量都存在,但内部“屏蔽”外部变量
var start;

function shapeAppear() {
    start = new Date().getTime();
}