【问题标题】:Multiple Variables and Prompts多个变量和提示
【发布时间】:2016-05-07 19:56:29
【问题描述】:

所以基本上我需要在回答问题后使用 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 的编码中没有出现任何错误,但我在提示中输入的任何数字都会显示为空白。

【问题讨论】:

    标签: javascript image variables var prompt


    【解决方案1】:

    问题似乎是=== 运算符。它在没有类型转换的情况下检查绝对相等。

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

    要解决此问题,请使用较弱的 == 运算符(它将适当地转换类型),或者不将 1 分配给 var sad,而是分配 "1"。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 所以我把它们都变成了一个字符串,唯一的区别是我只是得到正常的 html 中性微笑,不管我从 1 到 10 输入什么输入,这是我写的代码:
      • var sad = "1",sad2 = "2",sad3 = "3"; var n1 = "4",n2 = "5",n3 = "6",n4 = "7";变量 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";}
      • 我已经删除了 img href 和 innerHTML,因为它已经用尽了我可以使用的字符数,但我使用了这个并且仍然是同样的东西
      • 唯一的区别是我得到中立并等待最初在 html 中的提示
      • 请有人找到图片来代替我的图片并尝试一下,并展示您的技能以使其正确。所以我可以像我们都是程序员/网络程序员一样学习。请!
      猜你喜欢
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      • 2017-03-25
      • 2018-08-03
      • 1970-01-01
      相关资源
      最近更新 更多