首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多变量与Prompt

多变量与Prompt
EN

Stack Overflow用户
提问于 2016-01-29 22:44:17
回答 2查看 109关注 0票数 0

因此,基本上,我需要让我的网站从一个图像转向另一个使用JavaScript和变量后,一个问题得到回答。我会提示用户关于那里的情绪,从1-10开始,如果他们选择1-3(悲伤),如果他们选择4-7(中性),图像会变成悲伤的脸,如果他们选择8-10(高兴),那么图像会变成一个快乐的脸。但是我的代码不起作用--我试过所有的方法

代码语言:javascript
运行
复制
    <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,但是我在提示符中输入的任何数字,页面都是空白的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-29 22:50:44

prompt()返回一个字符串。如果要使用===,则应该将其与其他字符串进行比较。参见这个问题Does it matter which equals operator (== vs ===) I use in JavaScript comparisons?

创建所有比较器变量字符串:

代码语言:javascript
运行
复制
// 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";
}
票数 1
EN

Stack Overflow用户

发布于 2016-01-29 22:50:26

问题似乎是===运算符。它检查绝对相等性而不进行类型转换。

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

要解决这个问题,要么使用较弱的==运算符(这将适当地转换类型),要么将1分配给var sad,而是指定"1"

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35095408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档