我需要帮助弄清楚为什么;如果'声明不起作用
I need help figuring out why this 'if' statement wont work
我正在尝试使用HTML、CSS和JavaScript制作一个简单的rgb游戏(学习)。
我想发生的是,当你点击一种颜色时,它会显示"正确"或"错误",而colors[3]
的静态值是正确的。我测试了很多东西,我认为这与数字与字符串或相关有关,但我不知道。当你点击一种颜色时,它们都会提示"错误",而不是当你点击正确的颜色时,在这种情况下,颜色[3](青色)应该显示"正确"。
谢谢。
var colors = [
"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 = colors[3];
console.log(pickedColor);
var colorDisplay = document.querySelector("#colorDisplay");
colorDisplay.textContent = pickedColor;
for (var i = 0; i < squares.length; i++){
squares[i].style.background = colors[i];
squares[i].addEventListener("click", function(){
var clickedColor = this.style.background;
if(clickedColor === pickedColor){
alert("correct");
} else {
alert("wrong");
}
});
}
body {
background-color: #232323;
}
.square {
width: 30%;
background: purple;
padding-bottom: 30%;
float: left;
margin: 1.66%;
}
#container {
margin: 0 auto;
max-width: 600px;
}
h1 {
color: white;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Color Game</title>
<link rel="stylesheet" href="colorGame.css">
</head>
<body>
<h1>The Great <span id="colorDisplay">RGB</span> Color 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 type="text/javascript" src="colorGame.js"></script>
</body>
</html>
据我所知,这只是值字符串格式的问题。pickedColor
在rgb值之间有空格。
var colors = [
"rgb(255, 0, 0)",
"rgb(255, 255, 0)",
"rgb(0, 255, 0)",
"rgb(0, 255, 255)",
"rgb(0, 0, 255)",
"rgb(255, 0, 255)"
]
您正在比较两个字符串,其中clickedColor有空格,pickedColor没有空格。或者在pickedColor中放置空格,或者在clickedColor:中删除空白
var colors = [
"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 = colors[3];
console.log(pickedColor);
var colorDisplay = document.querySelector("#colorDisplay");
colorDisplay.textContent = pickedColor;
for (var i = 0; i < squares.length; i++){
squares[i].style.background = colors[i];
squares[i].addEventListener("click", function(){
var clickedColor = this.style.background;
if(clickedColor.replace(/ /g,'') === pickedColor){
alert("correct");
} else {
alert("wrong");
}
});
}
var colors = [
"rgb(255, 0, 0)",
"rgb(255, 255, 0)",
"rgb(0, 255, 0)",
"rgb(0, 255, 255)",
"rgb(0, 0, 255)",
"rgb(255, 0, 255)"
]
用这个,你就可以走了。从this.background.style.
由于您的比较方式,此游戏无法正常运行。浏览器有很多怪癖,其中之一就是它们如何解释属性。
例如,您可以假设这两个属性是相同的:this.style.background
this.style.background-color
但是,根据浏览器的不同,你可能是错的,也可能是对的。IE尤其不一致,频繁更改为this.style.background
根本不影响background-color
,因此设置background:red;
并不意味着background-color
为红色,也不意味着background-color
等于rgb(255,0,0)
、red
或#ff0000
。它"极不可预测"。
为了让这个游戏发挥作用,你需要做一个叫做规范化的操作。这意味着您将编写一个能够处理red
、#ff0000
、#f00
、rgba(255,0,0)
、rgba(255,0,0,1)
和rgb( 255 , 0 ,0)
的函数,并将其转换为一种特定的格式,然后进行正确比较。
- 我需要帮助弄清楚为什么;如果'声明不起作用
- 如果声明防止漫画被放置在预先定义的区域之外
- 如果声明不起作用-任何想法
- 如果用户授权声明
- Ember.js车把如果,否则声明
- 如果我声明 CSS 中的 id 复制到 Javascript 中的 id 会发生什么
- 基金会手风琴如果未在 HTML 中声明,则不加载
- 如果 ||(或)声明
- 如果某个函数没有优化,这是否意味着声明它的所有函数也没有优化
- 如果我用 let 声明它,我是否需要删除 javascript 中的对象
- 如果已经声明了宽度,则在页面加载后更改图像宽度?如果未声明宽度,则宽度将更改,但如果像我一样声明,则不会更改
- 我想将不存在的项目推送到已经声明的对象中,如果它们尚不存在,请使用 lodash 进行角度
- 如果声明为对象的一部分,VideoJS 将不会启动视频
- 如果可能的话,我想写IF ELSE声明DRYer
- Javascript - 如果语句同时检查表达式和定义声明?这是令人困惑的
- Javascript脚本获胜't用我的'否则如果'声明
- 如果声明或/不做什么?Gmail谷歌应用程序脚本
- 简单的“;如果“否则”;声明问题
- 如果display是在CSS上声明的,为什么element.style.display是空的
- 如果JS在php-if语句中,我在哪里声明JS依赖项