就是一个倒计时问题,页面出来的数字不能自己变化,只能刷新才能看到数字变化是问什么,求一个解决方法,谢谢
用这个定时刷新,每秒执行一次
setInterval(function() {
}, 1000);
在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable
值决定的。可枚举性决定了这个属性能否被for…in
查找遍历到。
js中的基本包装类型的原型属性是不可枚举的,比如Object,Array,Number等
这是一个例子:
var num = new Number();
for(var pro in num) {
console.log("num." + pro + " = " + num[pro]);
}
//此处没有输出
它的输出结果是空的,因为Number中的内置属性是不可枚举的,所以不能被 for ... in 访问到
每个对象都有propertyIsEnumerable()方法,这个方法可以判断出指定的属性是否可枚举。
用法:
obj.propertyIsEnumerable("属性名");
function Person(){
this.name = "我是实例属性"
this.age = 19;
}
var p = new Person();
console.log(p.propertyIsEnumerable("name")); //true
Person.prototype.prop = "我是原型属性" //添加一个原型属性
console.log(p.propertyIsEnumerable("prop")); //false prop是继承自原型上的属性,所以返回的是false
for(var k in p){
console.log(k+","+p[k]);//name,我是实例属性 age,19 prop,我是原型属性
}
从中也可以发现,如果是对象的原型链中的属性,不管是否枚举都会返回false。
但是 for ...in 仍然可以读出原型链中的可枚举属性
回答:
实现js倒计时并让数字实时变化可以采用setTimeout或setInterval来实现。以下是基本步骤:
<span id="timer"></span>
var totalTime = 600;
var decreaseTime = 1;
function countdown() {
var timerEl = document.getElementById("timer");
var remainTime = totalTime;
var timerId = setInterval(function() {
if (remainTime < 0) {
clearInterval(timerId);
timerEl.innerText = "时间到!";
} else {
var min = Math.floor(remainTime / 60);
var sec = remainTime % 60;
timerEl.innerText = min + "分" + sec + "秒";
remainTime -= decreaseTime;
}
}, 1000);
}
countdown();
相关链接: