<progress><meter>标签

Posted by eckid on December 10, 2015

<progress><meter>标签 JS控制

<progress>标签用于定义运行中的进度(进程)

<meter>标签用来表示度量

用法示例

<p>当前进度为:<progress max="100"><span id="progress">0</span>%</progress></p>

<meter id="meter" value="50" max="100" min="0">0.5</meter>

JS示例

当我想用Meter实现一个从0%-100%的加载过程时,首先尝试了用for循环以及setTimeout()来控制。 大概像这样:

for(var i=0;i<100;i++){
	setTimeout(setMeterValue(i),100);
}

但是运行后并没有发生一个逐步变化的过程。由于JS是单线程的,setTimeout的时间延迟在for循环完毕之后才执行setMeterValue(),结果只执行了最后一次。

因此就采用setInterval()来实现。

<script>
	var i=1;
	function thread_one(){
		if(i<100){
			setMeterValue(i);
			i++;
		}
	}
	setInterval(thread_one,100)

	function setMeterValue(newvalue){
		var meterBar = document.getElementById('meter');
		meterBar.value = newvalue;
	}
</script>

完整的样例代码

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Meter元素JS控制</title>
</head>
<body>
<section>
	<meter id="meter" value="50" max="100" min="0"></meter>
</section>
<script>
	var i=1;
	function thread_one(){
		if(i<100){
			setMeterValue(i);
			i++;
		}
	}
	setInterval(thread_one,100)

	function setMeterValue(newvalue){
		var meterBar = document.getElementById('meter');
		meterBar.value = newvalue;
	}
</script>
</body>
</html>