【问题标题】:If statement is always false even if the condition is true in java script即使java脚本中的条件为真,if语句也总是假的
【发布时间】:2017-05-16 17:07:59
【问题描述】:

这是 javascript 和 HTML 和 CSS 我对 javascript 很陌生,问题是 if 语句总是显示错误,即使它不应该 if 语句总是错误,即使我点击 win 变量的颜色值数组颜色的第三个索引的值显示错误

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 win =colors[3];
var winclrdisplay=document.querySelector(".winclr");
var square= document.querySelectorAll(".square");

	winclrdisplay.textContent=" "+ win;
	
	for (var  i = 0 ;i < square.length ; i++){
		//colors 
		square[i].style.background =colors[i];
		
		// click listener
		square[i].addEventListener("click", function(){
		 var click = this.style.background;
		 if (click == win){
		 	alert("correct");
		 }else{
		 	alert("wrong");
		 }
		}
 		);
	} 
body {
	background-color: #232323;
}

.square{
	width: 30%;
	background: purple;
	padding-bottom: 30%;
	float: left;
	margin: 1.66%;


}

#container {
	max-width: 600px;
	margin: 0 auto;
}
h1 {
	color:white;
}
<html>
<head>
	<title>color guessing game</title>
	<link rel="stylesheet" type="text/css" href="colorapp.css">

</head>
<body>
	<h1>The Great <span class="winclr"></span> colour 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="colorapp.js"></script>
</body>
</html>

【问题讨论】:

  • 您想通过console.log(click) 来查看您实际获得了什么价值。
  • 考虑将颜色写成十六进制代码,可以作为字符串进行比较
  • @CBroe:不,他/她想使用浏览器内置的强大调试器来查看他/她实际得到了什么。当您可以使用调试器打开灯时,无需使用console.log 手电筒在黑暗中跌跌撞撞。
  • 当您提出问题时,文本区域右侧有一个橙色的大如何格式化框,其中包含有用的信息。还有一个完整的格式化辅助工具栏。还有一个 [?] 按钮提供格式化帮助。 并且一个预览区域位于文本区域和发布您的问题按钮之间(这样您就必须滚动过去才能找到该按钮,以鼓励您查看它)显示您的帖子发布时的样子。使您的帖子清晰,并证明您花时间这样做,可以提高您获得好答案的机会。

标签: javascript


【解决方案1】:

使用 element.getComputedStyle。如果 css 样式是内联的,则 element.style 获取值。它总是假的,因为它没有价值。

类似的东西

var element = document.getElementById('box'),
            style = window.getComputedStyle(element),
            bg = style.getPropertyValue('background-color');

    console.log(bg);

【讨论】:

  • 什么是窗口元素 colorapp.js:23 未捕获的类型错误:无法在“窗口”上执行“getComputedStyle”:参数 1 不是“元素”类型。在 HTMLDivElement. (colorapp.js:23)
【解决方案2】:

几乎不可能理解您的问题,因为它的格式不正确。但是快速浏览一下,您的if 声明中缺少一个结束)

if (click == "rgb(0,255,255"){

应该是

if (click == "rgb(0,255,255)"){

if (click == rgb(0,255,255)){

(再说一次,我不确定你的目标是什么)

【讨论】:

  • 最后一个导致错误,因为rgb(...)不会被定义..
  • 我相信他只是想获取他在页面上单击的位置的 rgb 颜色。
  • 是的,我正在尝试通过单击不同的框从页面中获取颜色
  • 我添加了代码 sn-p 可能现在你明白了,当我点击青色时,你希望 if 语句为真,但它是假的,我不明白为什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-05
  • 1970-01-01
  • 2016-10-03
相关资源
最近更新 更多