Javascript 实时显示
我试图在页面上显示经过的实时时间 所以我有一个函数,它计算到第二秒的确切时间,当调用时,它会用这个时间更新HTML节点。使用setInterval每秒调用此函数以更新显示似乎效率低下。有人能提出更好的解决方案吗?非常感谢Javascript 实时显示,javascript,html,angularjs,Javascript,Html,Angularjs,我试图在页面上显示经过的实时时间 所以我有一个函数,它计算到第二秒的确切时间,当调用时,它会用这个时间更新HTML节点。使用setInterval每秒调用此函数以更新显示似乎效率低下。有人能提出更好的解决方案吗?非常感谢 $scope.getAge = function(){ var today = new Date(); var birthDate = new Date("1980-05-30T04:00:00"); va
$scope.getAge = function(){
var today = new Date();
var birthDate = new Date("1980-05-30T04:00:00");
var bdInMilis = birthDate.getTime();
var todayInMilis = today.getTime();
var timeAlive = todayInMilis - bdInMilis;
timeAlive = timeAlive/1000;
var numyears = Math.floor(timeAlive / 31536000);
var numdays = Math.floor((timeAlive % 31536000) / 86400);
var numhours = Math.floor(((timeAlive % 31536000) % 86400) / 3600);
var numminutes = Math.floor((((timeAlive % 31536000) % 86400) % 3600) / 60);
var numseconds = Math.floor((((timeAlive % 31536000) % 86400) % 3600) % 60);
var ageNode = document.getElementById("age-node");
if(ageNode){
ageNode.innerHTML = ("I am "+numyears+ " years, " + numdays + " days, " + numhours + " hours, " + numminutes + " minutes, " + numseconds + " seconds old (give or take)");
// can't keep doing this calculation every second
//$scope.refreshTime();
}
};
当需要一段时间时,使用setInterval比超时更好() 另外,如果您使用的是angularjs,请不要将字符串与innerHTML绑定
<div>{{age}}</div>
...
$scope.getAge = function(){
var today = new Date();
var birthDate = new Date("1980-05-30T04:00:00");
var bdInMilis = birthDate.getTime();
setInterval(function(){
var todayInMilis = today.getTime();
var timeAlive = todayInMilis - bdInMilis;
timeAlive = timeAlive/1000;
var numyears = Math.floor(timeAlive / 31536000);
var numdays = Math.floor((timeAlive % 31536000) / 86400);
var numhours = Math.floor(((timeAlive % 31536000) % 86400) / 3600);
var numminutes = Math.floor((((timeAlive % 31536000) % 86400) % 3600) / 60);
var numseconds = Math.floor((((timeAlive % 31536000) % 86400) % 3600) % 60);
$scope.age = "I am "+numyears+ " years, " + numdays + " days, " + numhours + " hours, " + numminutes + " minutes, " + numseconds + " seconds old (give or take)";
},1000);
};
{{age}
...
$scope.getAge=function(){
var today=新日期();
var出生日期=新日期(“1980-05-30T04:00:00”);
var bdInMilis=birthDate.getTime();
setInterval(函数(){
var todayInMilis=today.getTime();
var timeAlive=今天的整数倍-整数倍;
timeAlive=timeAlive/1000;
var numyears=数学地板(timeAlive/31536000);
var numdays=数学楼层((timeAlive%31536000)/86400);
var numhours=数学楼层((时间活动%31536000)%86400)/3600);
var numminutes=数学地板(((timeAlive%31536000)%86400)%3600)/60);
var numseconds=数学地板(((timeAlive%31536000)%86400)%3600)%60);
$scope.age=“我是”+numyears+“年”、+numdays+“天”、+numhours+“小时”、+numminutes+“分钟”、+numseconds+“秒(给或拿)”;
},1000);
};
当您需要一段时间时,使用setInterval优于超时()
另外,如果您使用的是angularjs,请不要将字符串与innerHTML绑定
<div>{{age}}</div>
...
$scope.getAge = function(){
var today = new Date();
var birthDate = new Date("1980-05-30T04:00:00");
var bdInMilis = birthDate.getTime();
setInterval(function(){
var todayInMilis = today.getTime();
var timeAlive = todayInMilis - bdInMilis;
timeAlive = timeAlive/1000;
var numyears = Math.floor(timeAlive / 31536000);
var numdays = Math.floor((timeAlive % 31536000) / 86400);
var numhours = Math.floor(((timeAlive % 31536000) % 86400) / 3600);
var numminutes = Math.floor((((timeAlive % 31536000) % 86400) % 3600) / 60);
var numseconds = Math.floor((((timeAlive % 31536000) % 86400) % 3600) % 60);
$scope.age = "I am "+numyears+ " years, " + numdays + " days, " + numhours + " hours, " + numminutes + " minutes, " + numseconds + " seconds old (give or take)";
},1000);
};
{{age}
...
$scope.getAge=function(){
var today=新日期();
var出生日期=新日期(“1980-05-30T04:00:00”);
var bdInMilis=birthDate.getTime();
setInterval(函数(){
var todayInMilis=today.getTime();
var timeAlive=今天的整数倍-整数倍;
timeAlive=timeAlive/1000;
var numyears=数学地板(timeAlive/31536000);
var numdays=数学楼层((timeAlive%31536000)/86400);
var numhours=数学楼层((时间活动%31536000)%86400)/3600);
var numminutes=数学地板(((timeAlive%31536000)%86400)%3600)/60);
var numseconds=数学地板(((timeAlive%31536000)%86400)%3600)%60);
$scope.age=“我是”+numyears+“年”、+numdays+“天”、+numhours+“小时”、+numminutes+“分钟”、+numseconds+“秒(给或拿)”;
},1000);
};
首先,您可以将前3个变量移出方法;他们不会每次都有什么不同。另外,另一方面。请看做指令。如果你的意思是setTimeInterval
而不是setTimeout
,我想不出不使用这两种方法中的任何一种就可以在JavaScript中获取时钟的方法。如果有人这样做,我会非常好奇!首先,您可以将前3个变量移到方法之外;他们不会每次都有什么不同。另外,另一方面。请看做指令。如果你的意思是setTimeInterval
而不是setTimeout
,我想不出不使用这两种方法中的任何一种就可以在JavaScript中获取时钟的方法。如果有人这样做,我会非常好奇!我认为问题是关于是否有一种方法不使用设置超时
(以及setTimeInterval
我假设)任何其他建议都应该放在评论中。我认为问题是关于是否有一种方法不使用设置超时
(以及setTimeInterval
我假设)任何其他的建议都应该写在评论中。。