我正在Raspberry Pi网站上尝试猜颜色练习的挑战部分(https://projects.raspberrypi.org/en/projects/cd-beginner-javascript-sushi/8)。
挑战要求我将身体背景颜色更改为游戏中的获胜颜色,在游戏中,你会看到顶部的RGB颜色代码和下面的6个彩色圆圈。你必须通过点击每一个来猜测6个彩色圆圈中哪一个有显示的RGB颜色代码,程序会告诉你是正确的还是不正确的。
在选择正确的圆圈后,主体背景颜色应该更改为正确圆圈的颜色,这就是我遇到问题的地方。我认为我的代码是对的,但我认为问题涉及某些变量的局部性,而没有考虑到这一点。
有问题的区域是我的script.js文档中的第40-50行;还有一些我用来排除故障的注释行。document.body.style.backgroundColor行确实有效,但对setButtonColour的函数调用以及setAttribute函数都不起作用。
我的代码在这里https://trinket.io/html/ad056ed56d?runMode=autorun
问题是document.getElementsByTagName('body');
返回<body>
元素的列表。
您应该将此行更改为var winning = document.getElementsByTagName('body')[0];
以访问第一个(也是唯一一个(<body>
元素。
如果要在javascript中引用<body>
,则应使用document.body
。
DOCS:
- https://developer.mozilla.org/en-US/docs/Web/API/Document/body
- https://www.w3schools.com/jsref/prop_doc_body.asp
代码中的第46行似乎有一个错误:
winning.setAttribute('style','background-color: rgb('+ red +','+ green +','+ blue +');');
看看这行的末尾-你不应该在background-color
之后使用;
,就在这里+');');
document.getElementById('btn').addEventListener('click',function(){
document.body.style.backgroundColor = 'red';
});
<button id="btn">Change body color</button>
您生成的颜色没有保存正确的答案。
if (i === answerButton) {
heading.innerHTML = 'R:' + red + ' G:' + green + ' B:' + blue;
//add this ->
winnerRed = red;
winnerGreen = green;
winnerBlue = blue;
}
你这样称呼它:
document.body.style.backgroundColor = "rgb("+ winnerRed +","+ winnerGreen +","+ winnerBlue + ")";