将具有相同ID的多个div更改为不同的高度

Dun*_*mer 0 html javascript

所以我有多个具有相同ID'stick'的div。我想遍历所有这些元素并给每个元素一个随机的高度。这是我尝试过的:

    <script type="text/javascript">
        for(var i = 0; i < 47; i++) {
            var rand = 200;
            document.getElementsById('stick')[i].style.height= rand+'px';  
        }
    </script>
Run Code Online (Sandbox Code Playgroud)

这段代码不会令人遗憾地工作。我想念什么吗?

谢谢。

Kov*_*vge 5

您不应为多个元素添加相同的ID。使用类名。并且document.getElemetsById不是定义的函数,仅document.getElementById(不带“ s”)应返回一个元素。

HTML:

    <div class="stick"> </div>
    <div class="stick"> </div>
Run Code Online (Sandbox Code Playgroud)

JS:

<script type="text/javascript">
    var divs = document.getElementsByClassName('stick');
    for(var i = 0; i < divs.length; i++) {
        var rand = 200 * Math.random();
        divs[i].style.height= rand+'px';  
    }
</script>
Run Code Online (Sandbox Code Playgroud)

这可能有效。但是我建议使用jQuery框架进行JavaScript编码,因为这些行在jQuery中变得更简单:

<script type="text/javascript">
     $('.stick').each(function(){            //iterates all elements having stick class
         $(this).height(200 * Math.random());       //inside the callback the 'this' is the current html element. etc ...
     });
</script>
Run Code Online (Sandbox Code Playgroud)

jQuery主页:http : //jquery.com/

快速包括到您的网站,只需从头部的CDN url导入jQuery:

   <head>
       ...
       <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
   </head>
Run Code Online (Sandbox Code Playgroud)