【问题标题】:How to select every 2nd element of an array in a for loop?如何在for循环中选择数组的每个第二个元素?
【发布时间】:2018-08-13 19:16:40
【问题描述】:

我正在努力提高我的 JavaScript 技能。使用 for 循环我想选择每隔一个元素(例如,我想让它们变为粗体或斜体)。我知道我可以使用 CSS3 和 nth-child 选择器来做到这一点,但正如我所说,我正在努力提高我的 JS 技能,我想使用 for 循环而不是 foreach 循环或其他方式来做到这一点JS 循环类型。我是 JS 的新手。

编辑:我想添加所有元素,但我只想拿起第二个元素以使它们变为粗体或斜体

var myList = document.getElementById(\'myList\');
var addList = [\"Python\", \"C\", \"C++\", \"Ruby\", \"PHP\", \"Javascript\", \"Go\", \"ASP\", \"R\"];

for (var i = 0; i < addList.length; i++) {
  var newLi = document.createElement(\"li\");

  newLi.innerHTML = addList[i];
  myList.appendChild(newLi);
}
&lt;ul id=\"myList\"&gt;&lt;/ul&gt;

    标签: javascript arrays


    【解决方案1】:

    使用modulus(%) 运算符获取每个2nd element 循环并在其上添加fontStyle

    var myList = document.getElementById('myList');
    var addList = ["Python", "C", "C++", "Ruby", "PHP", "Javascript", "Go", "ASP", "R"];
    
    for (var i = 0; i < addList.length; i++) {
      var newLi = document.createElement("li");
      newLi.innerHTML = addList[i];
      if(i%2==0){
      newLi.style.fontStyle = "italic"
      newLi.innerHTML = "<strong>"+addList[i]+"</strong>";
      }
    
    
      
      myList.appendChild(newLi);
    }
    &lt;ul id="myList"&gt;&lt;/ul&gt;

    【讨论】:

    • oo 谢谢你,这太好了,所以我可以添加代码而不是 css,例如 <strong>element</strong> 吗?
    • 如何 ? if(i % 2 == 0){ newLi.innerHTML = "<strong>".addList[i]+"</strong>"; } 这行不通
    【解决方案2】:

    在您的 for 循环中,不是将 i 增加 1,而是在每次使用 i+=2 的迭代时将 i 增加 2。

    更新代码:

    var myList = document.getElementById('myList');
    var addList = ["Python", "C", "C++", "Ruby", "PHP", "Javascript", "Go", "ASP", "R"];
    
    for (var i = 0; i < addList.length; i+=2) {
      var newLi = document.createElement("li");
    
      newLi.innerHTML = addList[i];
      myList.appendChild(newLi);
    }
    &lt;ul id="myList"&gt;&lt;/ul&gt;

    【讨论】:

    • 如果真的是每隔一个元素,从 1 开始,而不是 0。
    • 不,这不是我要寻找的答案
    【解决方案3】:

    在您的for 循环中,使用i += 2 而不是i++

    【讨论】:

    • 我猜是从1 开始i 而不是0
    • 它不直接跟随问题。
    • 不,这不是我要寻找的答案
    【解决方案4】:

    您可以在循环体中添加类似这样的内容:

    if (i % 2 == 1) {
        // whatever you need to do to make it bold or italic
    }
    

    这将为i 的每个奇数值调用。

    【讨论】:

      【解决方案5】:

      要添加所有元素并选取每个第二个元素,请在 if 语句中使用模运算符 %i % 2 == 0 并更改 fontStyle

      更新代码:

      var myList = document.getElementById('myList');
      var addList = ["Python", "C", "C++", "Ruby", "PHP", "Javascript", "Go", "ASP", "R"];
      
      for (var i = 0; i < addList.length; i+=2) {
        var newLi = document.createElement("li");
        
        if (i % 2 == 0) {
          // make bold
          newLi.style.fontStyle = "bold"
          // make italic
          newLi.style.fontStyle = "italic"
        }
      
        newLi.innerHTML = addList[i];
        myList.appendChild(newLi);
      }
      &lt;ul id="myList"&gt;&lt;/ul&gt;

      【讨论】:

      • 不,这不是我要寻找的答案
      【解决方案6】:

      只需在循环中使用 i+=2 代替 i++

      【讨论】:

      • 不,这不是我要寻找的答案
      • 好的@ani_css 然后在循环中放入一个等于 i 的新变量 ..然后将 2 添加到该新变量然后你会得到每一秒 i
      • 我用这个 if(i % 2 == 1){ newLi.innerHTML =+"<strong>"+addList[i]+"</strong>"; } 但什么也没发生
      猜你喜欢
      • 2018-08-13
      • 1970-01-01
      • 2014-08-28
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-03
      相关资源
      最近更新 更多