如何在Javascript中使用三元运算符来确定某些内容是偶数还是奇数?

时间:2014-11-30 03:18:28

标签: javascript arrays ternary

所以我需要弄清楚如何将“p”标签存储到一个数组中,然后使用三元运算符来确定“p”标签是偶数还是奇数。

  1. 我的数组是否正确存储“p”标签?
  2. 我如何使用三元运算符循环并自动设置偶数/奇数(我必须使用不同颜色的背景来实现均衡和可能性)
  3. 这是我到目前为止所拥有的。我知道如何手动编码evens / odds。但我似乎无法找到任何帮助三元运算符循环我的代码并检查“p”标签是偶数还是奇数。

    function paragraph()
    {
    
       list = new Array();
    
       var list = document.getElementsByTagName("p"); 
    
       var even = list[0];
       var odd = list[1];
    
       even.style.backgroundColor = "#CCFFFF";
       odd.style.backgroundColor = "#CCFFCC";
    } //end of paragraph()
    

    我似乎真的很难用数组和循环。所以任何帮助将不胜感激。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

  
      
  1. 我的数组是否正确存储“p”标签?
  2.   

您实际上不需要list = new Array();,因为document.getElementsByTagName("p")会返回您可以循环的所有p标记的集合。

  
      
  1. 我如何使用三元运算符循环并自动设置偶数/奇数(我必须使用不同颜色的背景来实现均衡和可能性)
  2.   

您需要使用for循环来枚举list,然后使用(i % 2 > 0)条件检查索引是否为奇数,并应用下面的三元运算符

var list = document.getElementsByTagName("p");
for (i = 0; i < list.length; i++) {
    list[i].style.backgroundColor = (i % 2 > 0) ? "#CCFFCC" : "#CCFFFF";
}

请注意,数组索引从0开始,所以当i等于0时,它是奇怪的,因为list[0]是第一个元素,当i等于1时,它甚至是因为{{1是第二个元素,依此类推。

工作演示:http://jsfiddle.net/6ub3fd7b/

答案 1 :(得分:0)

三元运算符只是一个方便,因此可以避免编写这样的代码:

var somevar = 0;

if (some_condition) {
    somevar= "somevalue";
}
else
if (another_condition) {
   somevar = "anothervalue"
}

它并没有解决手头的问题;它只是通过提供单行代码的语法来避免键入多行代码。

如果您要利用级联样式表,这将简化javascript,如果您要使用它来更改每个&#39; p&#39;标记如下:

<style>
p { background:#FFF; }
p.even  {font: 150% Arial,Helvetica;background: #FCC; color:#f00}
p.odd   {font: 150% Arial,Helvetica;background: #CCF;color:#369}
</style>

var ptags = document.getElementsByTagName("p"); 

for (i = 0; i < ptags.length; i++) {
    ptags[i].className = ( i % 2 )? 'odd' : 'even';
}

请参阅http://jsfiddle.net/ngmgv263/3/

这里的主力运算符是模数或模数,因为它有时被称为。如果该操作的结果不为零,则背景样式将为“奇数”类。否则,班级会变为“均匀”。 优点是,无论何时您可能希望更改这对颜色,您都不需要修改javascript - 只需要修改偶数和奇数的背景值。标签类。此外,如果您想要交替使用字体颜色,则无需修改JavaScript;你只需要在偶数和奇数类中指定它们,以便&#39; p&#39;标签就像我在示例代码中所做的那样。

在这种情况下,三元运算符使用的结果只有零或一,这有助于渲染交替的颜色。如果我们想要有三种交替的背景样式,那么数学将是&#39; i%3&#39;在这种情况下,您不需要使用三元运算符,而是需要使用switch语句或& #39; if(condition)else if(condition)else ...&#39;控制结构,因为有三个可能的结果,零,一和二,三元一次只处理两个,虽然你可以使用嵌套的三元组,但这可能会使代码过于复杂并使其不易清晰。