簡體   English   中英

如何在Javascript中使用三元運算符來確定某些事物是偶數還是奇數?

[英]How can I use the ternary operator in Javascript to determine if something is even or odd?

因此,我需要弄清楚如何將“ p”標簽存儲到數組中,然后使用三元運算符確定“ p”標簽是偶數還是奇數。

  1. 我的Array是否適合存儲“ p”標簽?
  2. 我如何使用三元運算符來循環並自動設置偶數/奇數(為了可讀性,我必須使用不同的顏色背景來實現偶數和奇數)

這是我到目前為止所擁有的。 我知道如何手動編碼偶數/奇數。但是,似乎似乎找不到任何幫助三元運算符遍歷我的代碼並檢查一下“ 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()

我似乎真的很難與數組和循環。 因此,任何幫助將不勝感激。 提前致謝。

  1. 我的Array是否適合存儲“ p”標簽?

您實際上不需要list = new Array(); 因為document.getElementsByTagName("p")返回所有可以循環的p標簽的集合。

  1. 我如何使用三元運算符來循環並自動設置偶數/奇數(為了可讀性,我必須使用不同的顏色背景來實現偶數和奇數)

您需要使用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時,它甚至是因為list[1]是第二個元素,依此類推。

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

三元運算符只是一種便利,因此可以避免編寫如下代碼:

var somevar = 0;

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

它不能解決眼前的問題。 通過提供單行代碼的語法,它僅使您免於鍵入多行代碼。

如果要利用級聯樣式表的優勢,可以簡化javascript,如果要使用它來更改每個'p'標簽的類名,則如下:

<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,只需修改偶數和奇數“ p”標記類的背景值即可。 另外,如果您希望使用交替的字體顏色,則無需修改JavaScript。 您只需像在示例代碼中那樣,在“ p”標記的偶數和奇數類中指定它們。

在這種情況下,三元運算符處理的結果將僅為零或一,這有助於呈現交替的顏色。 如果我們想使用三種交替的背景樣式,那么數學將為'i%3',在這種情況下,您將需要使用switch語句或'if(condition)else if(條件... else的控制結構,因為將有三個可能的結果,零,一和二,三元一次只處理兩個,盡管您可以使用嵌套三元,但這可能會使代碼過於復雜並使它不太清晰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM