javascript - 使用循环将不同样式应用于元素

标签 javascript jquery html css

在过去的几天里,我尽可能地在 stackoverflow 上搜索我的问题的答案。我不太精通 JS/jQuery,所以我的答案可能确实存在,但我没有搜索正确的术语,所以如果我碰巧创建了一个重复的主题,我会提前道歉,所以如果有人可以指导我到正确的地方来回答我的问题,我将不胜感激。

无论如何,回答我的问题。

我正在尝试计算 div 中的元素数量。在计算出该 div 中有多少元素后,我想根据这些元素在容器中的位置对它们应用不同的样式/条件。我最终想将其应用于 Accordion ,默认情况下保持顶部的几个打开,其余的关闭。我认为从小处开始改变某些元素的颜色是学习如何使用循环的正确方法。执行此操作的方法可能已经存在,但我不完全确定。

下面是我如何尝试执行此操作的一个粗略示例。请记住,我对此非常陌生,所以我正在以最糟糕的方式这样做

<style>
    .green {
        background: green;
    }

    .blue {
        background: blue;
    }
</style>

<script type="text/javascript">
$(document).ready(function(){
    var count = $(".container > div").length;

    for (var i = 1; i <= count; i++) {
        if (i <= 3) {
            console.log(i  + "green");
                $(".container div").addClass("green");
        }
        else {
            console.log(i  + "blue");
            $(".accordion .item h1").addClass("blue");
        }
    }
});
</script>

<div class="container">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
</div>

我觉得问题可能出在我执行此操作时。容器全部变成蓝色,如果我移除其他容器,它们全部变成绿色。如果我输入 console.log,它看起来好像在后端正常工作,只是显示不正确。

谢谢,任何和所有的帮助将不胜感激。期待了解我做错了什么。

最佳答案

使用eq()选择器

var count = $(".container > div").length;

for (i = 1; i <= count; i++) {
      if (i <= 3) {
          console.log(i  + "green");
          $(".container div").eq(i-1).addClass("green");
      }
      else {
          console.log(i  + "blue");
          $(".accordion .item h1").addClass("blue");
      }
}

关于javascript - 使用循环将不同样式应用于元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23368652/

相关文章:

javascript - jQuery - 检查复选框并禁用其他(如果有不同的值)

Javascript 在 chrome 中有效,但在 IE 中无效

javascript - 如何计算字符串javascript函数中的特殊字符,该函数只接受@#

jQuery 从 6 个 "toggle"Divs 切换主图像

javascript - 使用 JavaScript 下载图像

javascript - 将 javascript 代码转换为 Jquery

html - 样式化了一个 HRef Float right 不工作 CSS

javascript - 在表单中添加值

javascript - 让JS部分更简单

javascript - 使用 JQuery 随机显示一个 div 类