如何为特定图像源制作If语句?

时间:2013-05-18 13:58:36

标签: javascript css switch-statement

我的程序中有这一行(在Dreamweaver中运行),如下所示:

function go() {
if((document.test.test1.src == document.test.test2.src && document.test.test2.src == document.test.test3.src ))

......
......
.....
}

此功能在我有3个不同的图像时运行,当三个图像中的任何一个在页面中彼此相等时。但是,我如何指定哪些图像彼此相等,而不是仅仅执行三者中的任何一个。

例如,如果一个图像的标题为'x',如果所有三个test1,test2,test都是值'x',它将运行该函数并显示此消息,但是,它会为其他图像显示相同的消息(如果所有相等的'y')我想以某种方式拥有单独的消息。

4 个答案:

答案 0 :(得分:1)

if声明中,您可以放置​​一个switch / case块来测试它是'x','y'等图像。无关紧要您检查的是哪个图像的src,因为您已经检查过它们都是相同的。

if((document.test.test1.src == document.test.test2.src && document.test.test2.src == document.test.test3.src ))
    switch (document.test.test1.src) {
        case "x":
            // Do stuff
            break;
        case "y":
            // Do other stuff
            break;
    }

答案 1 :(得分:1)

如果我理解正确,您可以在代码中添加一个开关,例如

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

“........”表示如果对象分别等于y或x,你想要运行什么。

答案 2 :(得分:0)

我将比较分离为一个单独的函数,当前图像元素作为参数,并将此方法用于不同的图像对象:

function compare(imgElem){
  if((document.test.test1.src == document.test.test2.src && document.test.test2.src == document.test.test3.src ))
    console.log(imgElem.id,"triggered");
    // or something else
  }
}

compare(document.test.test1);
compare(document.test.test2);
compare(document.test.test3);

然而解决方案可能不准确,具体取决于您要比较的元素数量。对于大量元素,请尝试使用地图。

答案 3 :(得分:0)

这应该很容易实现

var a=document.test.test1.src;
var b=document.test.test2.src;
var c=document.test.test3.src

var fn: {
    x: function() { alert(messageX); },
    y: function() { alert(messageY); },
    z: function() { alert(messageZ);}
};

if(a==b && b==c) {
    if(fn.hasOwnProperty(a)) {
        fn[a](); //you can also use 'b' or 'c' since they're all equal 
    }
}