2016-01-29 63 views
0

所以基本上我需要让我的网站从一个图像变成另一个使用JavaScript和变量后问题得到解答。我会提示用户从1-10的情绪提示用户,如果他们选择4-7(中性)图像变为中性脸部,他们会选择1-3(悲伤)图像变成悲伤的脸部, 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,但任何数量的我把在提示页面只是出来空白。

回答

1

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"; 
} 
+0

所以我必须让他们都为一个字符串,唯一的区别是,我只是得到正常的HTML中性的微笑与等待,不管我穿什么输入从1 - 10这是我写的代码: – NarinderRSharma

+0

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(“你的情绪是从1-10?1悲伤的,10是幸福的。”); if(x === sad || x === sad2 || x === sad3){document.getElementByTagName(“img”)。src =“s.png”} else if(x === n1 || x === n2 || x === n3 || x === n4){ document.getElementByTagName(“img”)。src =“s.png”;} else if(x == = h1 || x === h2 || x === h3){ document.getElementByTagName(“img”)。src =“h.png”;} – NarinderRSharma

+0

我已经取消了img href和innerHTML,因为它最大的人物数量我可以使用,但我用这个andstill相同的东西 – NarinderRSharma

3

该问题似乎是===运算符。它检查绝对平等而无需类型转换。

当您在提示中输入1时,很可能记录为“1”,即字符串。当您检查是否x === sad时,您正在检查“1”是否等于1(它不是 - 第一个是字符串,第二个是数字)。

为了解决这个问题,或者使用较弱==操作者(其将相应地转换类型),或代替分配1var sad,分配"1"代替。