[英]How can I use the ternary operator in Javascript to determine if something is even or odd?
因此,我需要弄清楚如何將“ p”標簽存儲到數組中,然后使用三元運算符確定“ p”標簽是偶數還是奇數。
這是我到目前為止所擁有的。 我知道如何手動編碼偶數/奇數。但是,似乎似乎找不到任何幫助三元運算符遍歷我的代碼並檢查一下“ 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()
我似乎真的很難與數組和循環。 因此,任何幫助將不勝感激。 提前致謝。
- 我的Array是否適合存儲“ p”標簽?
您實際上不需要list = new Array();
因為document.getElementsByTagName("p")
返回所有可以循環的p
標簽的集合。
- 我如何使用三元運算符來循環並自動設置偶數/奇數(為了可讀性,我必須使用不同的顏色背景來實現偶數和奇數)
您需要使用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.