我有这个函数,它应该创建一个棋盘。
function createBoard() {
let strHTML = "";
let alphabets = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];
for (var row = 0; row < 8; row++) {
strHTML += "<div>";
for (var column = 0; column < 8; column++) {
if ((column + row) % 2 === 0) {
strHTML +=
`<div class="white_square" id="${alphabets[column]}${8-row}" onclick="test()"></div>`;
}
}
// .... omitted some code for clarity
};
这是将白色方块的 css 背景颜色"变异"为绿色的函数。
$("#blackPawn").click(function() {
createBoard();
$("#a6").css("background-color", "green");
alert($("#a6").css("background-color"));
});
这是单击正方形时调用的函数。如果正方形是绿色的,它应该说"恭喜",否则它只会说它是一个白色的正方形。
function test() {
if ($(".white_square").css("background-color") === "rgb(0, 128, 0)") {
alert("good job eric");
} else {
var k = $(".white_square").css("background-color");
alert(k);
}
}
该行
alert($("#a6").css("background-color"));
表示"#a6"的背景颜色属性现在具有值"rgb(0, 128, 0(。但是,当我单击触发 test(( 函数的那个方块时,它说它的值为 rgb(255, 255, 255(。为什么会这样呢?
jQuerycss
方法的文档解释(强调我的(:
获取匹配元素集中第一个元素的计算样式属性的值 [...]
虽然a6
是.white_square
,但它不是第一个。在这里,您实际上只检查第一个的背景颜色:
$(".white_square").css("background-color") === "rgb(0, 128, 0)"
以及随后的alert
。
通过选择单击的方块来解决此问题:
$(this).css("background-color")
或:
$(ev.target).css("background-color")