因此,基本上,我需要让我的网站从一个图像转向另一个使用JavaScript和变量后,一个问题得到回答。我会提示用户关于那里的情绪,从1-10开始,如果他们选择1-3(悲伤),如果他们选择4-7(中性),图像会变成悲伤的脸,如果他们选择8-10(高兴),那么图像会变成一个快乐的脸。但是我的代码不起作用--我试过所有的方法
<head>
<title>Mood</title>
<meta charset="UTF-8">
<script>
var sad = 1 , sad2 = 2, sad3 = 3;
var n1 = 4, n2 = 5, n3 = 6, n4 = 7;
var h1 = 8, h2 = 9, h3 = 10;
var x = prompt("What is your mood from 1-10? 1 being sad, 10 being Happy.","What is your mood?");
if(x === sad || x === sad2 || x === sad3){
document.getElementByTagName("img").src = "sad.png";
document.getElementById("msg").innerHTML = "Sad.";
document.getElementById("msg").href = "http://www.sad.com";
}
else if(x === n1 || x === n2 || x === n3 || x === n4){
document.getElementByTagName("img").src = "neutral.png";
document.getElementById("msg").innerHTML = "Neutral.";
document.getElementById("msg").href = "http://www.neutral.com";
}
else if(x === h1 || x === h2 || x === h3){
document.getElementByTagName("img").src = "happy.png";
document.getElementById("msg").innerHTML = "Happy.";
document.getElementById("msg").href = "http://www.happy.com";
}
</script>
</head>
<body style="text-align:center">
<img src="neutral.png">
<h1><a id="msg" href="">Waiting...</a></h1>
</body>
它给我的编码没有错误,我使用的是NetBeans,但是我在提示符中输入的任何数字,页面都是空白的。
发布于 2016-01-29 22:50:44
prompt()
返回一个字符串。如果要使用===
,则应该将其与其他字符串进行比较。参见这个问题Does it matter which equals operator (== vs ===) I use in JavaScript comparisons?。
创建所有比较器变量字符串:
// Make Strings
var sad = "1",
sad2 = "2",
sad3 = "3";
var n1 = "4",
n2 = "5",
n3 = "6",
n4 = "7";
var h1 = "8",
h2 = "9",
h3 = "10";
//
var x = prompt("What is your mood from 1-10? 1 being sad, 10 being Happy.", "What is your mood?");
if (x === sad || x === sad2 || x === sad3) {
document.getElementByTagName("img").src = "/img/ico/favicon.png";
document.getElementById("msg").innerHTML = "Sad.";
document.getElementById("msg").href = "http://www.sad.com";
} else if (x === n1 || x === n2 || x === n3 || x === n4) {
document.getElementByTagName("img").src = "/img/ico/favicon.png";
document.getElementById("msg").innerHTML = "Neutral.";
document.getElementById("msg").href = "http://www.neutral.com";
} else if (x === h1 || x === h2 || x === h3) {
document.getElementByTagName("img").src = "/img/ico/favicon.png";
document.getElementById("msg").innerHTML = "Happy.";
document.getElementById("msg").href = "http://www.happy.com";
}
发布于 2016-01-29 22:50:26
问题似乎是===
运算符。它检查绝对相等性而不进行类型转换。
当您在提示符中输入1时,它很可能被记录为"1",即字符串。当您检查是否为x === sad
时,您要检查"1“是否等于1(它不是--第一个是字符串,第二个是数字)。
要解决这个问题,要么使用较弱的==
运算符(这将适当地转换类型),要么将1
分配给var sad
,而是指定"1"
。
https://stackoverflow.com/questions/35095408
复制相似问题