-1

我的程序中有这一行(在 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

4 回答 4

1

在您的if语句中,您可以放置​​一个switch/case块来测试它是“x”、“y”等的哪个图像。您检查哪个图像并不重要src,因为您已经检查了它们是否都相等。

IE

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;
    }
于 2013-05-18T14:05:47.853 回答
1

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

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

“........” 指定对象分别等于 y 或 x 时要运行的内容。

于 2013-05-18T14:07:33.503 回答
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);

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

于 2013-05-18T14:05:57.903 回答
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 
    }
}
于 2013-05-18T14:22:02.520 回答