要javascript原生方法,JQ的不要..我想要的效果:点击<a>后->它的父级div在一个设定时间内(如10秒)由现在的宽度100px慢慢的变宽,增加到1000px;好像应该用:setTimeout、clearTimeout... 要javascript原生方法,JQ的不要..

我想要的效果:点击<a>后 -> 它的父级div在一个设定时间内(如10秒)由现在的宽度100px慢慢的变宽,增加到1000px;

好像应该用:setTimeout、clearTimeout 之类的。我新手,弄了一晚上都不知道该怎么加才能实现反复调用函数这个流程让div宽度逐步增加,如果不麻烦的话,请在代码里面写点简单的注释,我学下大概实现这个的判断流程、原理之类的。

万分感谢!!
<style>div{ width: 100px; height: 100px; line-height:100px; background: red; text-align: center;}</style><div><a href="#" id="text">Test</a></div>

<script>
(function test(objID) { var text = document.getElementById(objID); text.onclick = function() { var text = document.getElementById(objID); var div = text.parentNode; //取得id=objID对象的父节点 var width = div.offsetWidth; //取得元素宽度 alert(width); for (var i = width; i < 1001; i++) { div.style.width = i + "px"; } }})("text");
</script>
<script>
    var i = 100;
    var text = document.getElementById("text");
    function test() {                 
   
        var div = text.parentNode;  //取得id=objID对象的父节点        
        var width = div.offsetWidth; //取得元素宽度        
        
        if (i < 1001) {//如果小于1000的话就把div宽度+1
            i++;
            div.style.width = i + "px";  
        };                
    };
    //test("text");
    text.onclick = function(){//点击执行
        //不断执行div宽度+1
        setInterval('test()',5);
    } 
    </script>

你的问题在于用了for循环了,应该用定时器~

希望我的回答能帮到你哈,有问题可以追问,觉得好就点个赞,有用就采纳!

稍微改动了你的代码。
<style>div{ width: 100px; height: 100px; line-height:100px; background: red; text-align: center;}</style><div><a href="#" id="ss" onclick="test()">Test</a></div><script>var j= 100;function test() { var text = document.getElementById("ss"); var div = text.parentNode; //取得id=objID对象的父节点 var width = div.offsetWidth; //取得元素宽度 alert(width); j++; div.style.width = div.offsetWidth + 1 + "px"; setTimeout("test()",300); }; </script> <div><a href="#" id="text">Test</a></div>

<script>
var i = 100;
var text = document.getElementById("text");
function test() {

var div = text.parentNode; //取得id=objID对象的父节点
var width = div.offsetWidth; //取得元素宽度

if (i < 1001) {//如果小于1000的话就把div宽度+1
i++;
div.style.width = i + "px";
};
};
//test("text");
text.onclick = function(){//点击执行
//不断执行div宽度+1
setInterval('test()',5);
}
</script>