2017-05-04 116 views
1

我有一個測試分數的數組,如果它們在70%以下,那麼它們的顏色應該是紅色,所以我創建了一個數組和一個for循環來從這個數組中選擇這些數。但是,當我嘗試將這些數組元素設置爲紅色時,出現此錯誤。我對JS有點新,所以它可能是一個簡單的修復。樣式數組元素Javascript

該數組的作品,它會打印在控制檯日誌70以下的分數,但如果我不能讓他們成爲紅色。有任何想法嗎?

Uncaught TypeError: Cannot set property 'color' of undefined at index.html:23

<script> 
    var scoresArray = [84, 72, 56, 84, 0, 76, 72, 68, 70]; 
    for (var i = 0; i < scoresArray.length; i++) { 
     if(scoresArray[i] < 70) { 
     var c = scoresArray[i]; 
     c.style.color = "red"; 
     } 
    } 
    testgen(scoresArray); 
</script> 

功能testgen從外部腳本調用。

function testgen(scoresArray) { 
    document.write("<li class=\"special\">"); 
    for (var i=0; i<scoresArray.length; i++) { 
    document.write("<li>" + scoresArray[i] + "</li>"); 
    } 
    document.write("</li>"); 
} 
+0

您正在嘗試這樣設置'c.style.color =「red」中的數字的CSS;''c'是數組中的一個數字。您只能設置元素的樣式,而不能編號 – j08691

回答

2

你的代碼有一個很大的缺陷。

我們將style屬性改爲DOM元素而不是任何變量或數組。

當你寫這樣的:

<script> 
    var scoresArray = [84, 72, 56, 84, 0, 76, 72, 68, 70]; 
    for (var i = 0; i < scoresArray.length; i++) { 
     if(scoresArray[i] < 70) { 
     var c = scoresArray[i]; 
     c.style.color = "red"; 
     } 
    } 
    testgen(scoresArray); 
</script> 

你的c是一個數組元素。它只是一個單獨的元素,可用於加/減或其他操作。

但是當你使用c.style,它的意思是「C」應該像

this: 
<div id="myElem">Hello</div> 

DOM元素請有關DOM元素,以及如何對它們使用JS應用CSS讀取一次。

對於你的情況,如果你想要特定元素爲紅色,您可以使用內聯CSS:

document.write("<li style='color:red'>" + scoresArray[i] + "</li>"); 
+0

它位於外部加載的腳本上。所以我猜他不能改變那部分代碼。 – vishva8kumara

1

當你把下在

var c = scoresArray[i]; 

這是一個數組元素,而不是一個DOM目的。所以你不能爲此設置風格。

由於您無法對該外部加載的腳本(我假設)進行更改,因此您可以使用一種解決方法來完成您在此處嘗試執行的操作。

你可以簡單地封裝低於70的分數跨度標籤,就像這樣:

scoresArray[i] = '<span style="color:red">' + scoresArray[i] + '</span>'; 

到位這兩行(刪除):

var c = scoresArray[i]; 
c.style.color = "red";