0

关于我之前的问题,我有图像(如果特定图像中的三个)相同,我希望出现一条消息,我遵循了上一个问题中的几个指导方针,但我仍然无法让它工作。

上一个问题:如何为特定图像源制作 If 语句?

它总是打印 else 语句,即使出现 x 的 3 个图像,它只打印主要消息,当 y 的 3 个图像出现(一次)或 z 时,也会出现同样的问题。任何帮助将非常感激。

新代码(Tad bit):

function xyz()  { 

    if((document.test.test1.src == document.test.test2.src && document.test.test2.src == document.test.test3.src ))
        switch (document.test.test1.src == document.test.test2.src == document.test.test3.src) {
            case "x":
                document.test.banner.value =("3 for x")// Do stuff
                break;
            case "y":
                document.test.banner.value =("5 for y")
                break;
            case "z":
            document.test.banner.value =("8 for z")
            break;
        }

    else 
    {
        document.test.UserTokens.value=document.test.UserTokens.value-document.test.bet.value; 
        document.test.banner.value="No match - You lost ";
    }
}
4

1 回答 1

0

这里有一个问题:

switch (document.test.test1.src == document.test.test2.src == document.test.test3.src)

Switch 语句计算您放入括号中的值。您正在比较.srcs,因此它将返回一个布尔值供 Switch 评估,而不是您希望的字符串。无需在 Switch 中比较它们,因为我们已经知道它们都是相同的。我们只需要知道其中之一。

其次,我发现您使用语法非常有趣(a == b == c。我做了一些测试,这就是它的作用。它相当于((a==b)==c)。它从左到右评估。首先,(a==b)它将返回一个布尔值。然后它将布尔值与c进行比较,我猜你的“c”不是布尔值,所以它总是会返回false

回顾你之前的问题

switch (document.test.test1.src) {
      case 'y':
        ........
        break;
      case 'x'
        ........
        break;
}

正如 dewd 所建议的,如果您决定坚持使用 Switch,这似乎是一个合适的选择。

希望有帮助。

于 2013-05-18T18:07:25.330 回答