我想用JS構建一個顏色猜測遊戲。我用了一個顏色數組和初始顏色列表。到目前爲止,整個代碼的工作原理,直到我試圖用每個方塊點擊當前顏色時顯示一個警報。訪問JavaScript的個人風格元素錯誤
在控制檯我得到的錯誤爲:
Uncaught TypeError: Cannot read property 'style' of undefined at HTMLDivElement. (color_game.js:25)
線25分這樣的:
var clickedColor = squares[i].style.background;
在這裏,我試圖讓參考陣列中的每個平方的風格。 (請看下面的src)
這說明......在進一步的檢查中未定義。
我的全代碼附加如下: HTML:
<body>
<h1>The Great <span id="colorDisp">RGB</span> Guessing Game</h1>
<div id="container">
<div class="square">
</div>
<div class="square">
</div>
<div class="square">
</div>
<div class="square">
</div>
<div class="square">
</div>
<div class="square">
</div>
</div>
<script src="color_game.js" type="text/javascript"></script>
</body>
JavaScript代碼:
var colorArr = [
"rgb(255, 0, 0)",
"rgb(255, 255, 0)",
"rgb(0, 255, 0)",
"rgb(0, 255, 255)",
"rgb(0, 0, 255)",
"rgb(255, 0, 255)"
];
var squares = document.querySelectorAll(".square");
var pickedColor = colorArr[3];
var colorDisp = document.getElementById("colorDisp");
colorDisp.innerHTML = pickedColor;
for (var i = 0; i < squares.length; i++) {
squares[i].style.background = colorArr[i];
squares[i].addEventListener("click", function() {
var clickedColor = squares[i].style.background;
alert(clickedColor);
if (clickedColor === pickedColor) {
alert("CORRECT");
} else {
alert("WRONG COLOR!!!");
}
});
}
我已經試過這兩條線,但我的代碼不執行:
var clickedColor = squares[i].style.background;
and
var clickedColor = this.style.background;
有人能告訴我如何訪問JS中數組的樣式元素嗎?
嘗試將發生錯誤的那一行更改爲'var clickedColor = event.target.style.background;' – Kevin
您可能希望在該行上方放置一個'console.log(i)',然後檢查瀏覽器控制檯......(我只是想知道,我們是否會就這個特殊問題層出不窮的問題......?) – CBroe