关于js中定时器、if条件判断的问题

问题描述:

运行js代码,发现progress标签的value值逐步增大,直到105,value的值就不变了。请问value的值为105后,满足if条件,value的值怎么不变为0?

window.onload = function(){ obj = document.getElementById("progress"); window.setInterval("change()",1000) } function change(){ if (obj.value>100) { obj.value = 0; }else { obj.value = obj.value + 5; } }



肯定,因为你的获取到的obj.value初始等于''(obj.value = ''), 字符串空加什么都是字符串, obj.value = obj.value + 5;改为

 obj.value = obj.value - 0 + 5;

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <input id='progress'>
    <script>
        window.onload = function () {
            obj = document.getElementById("progress");
            window.setInterval("change()", 1000)
        }
        function change() {
            if (obj.value > 100) {
                obj.value = 0;
            } else {
                obj.value = obj.value + 5;
            }
        }
    </script>
</body>

</html>

可以变为零, 但 obj.value 的值为字符串

使用parseInt方法转: obj = parseInt(document.getElementById("progress")); 还要考虑值为空的情况。
这是最基本的js方法,没事多看下api