-1

私のプログラム(Dreamweaverで実行)には、次の行があります。

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

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

この関数は、3 つの画像のいずれかがページ内で互いに等しい場合に 3 つの異なる画像がある場合に実行されます。ただし、3 つのいずれかを行うのではなく、どの画像を互いに等しくするかを指定するにはどうすればよいでしょうか。

たとえば、1 つの画像のタイトルが「x」で、3 つの test1、test2、test の値がすべて「x」である場合、関数が実行されてこのメッセージが表示されますが、他の画像についても同じメッセージが表示されます (すべて等しい場合)。 'y') どうにかしてメッセージを分けたいと思っています。

4

4 に答える 4

1

ifステートメント内にswitch/ブロックを配置して、「x」、「y」などのイメージをテストできます。すべてが等しいことを既に確認しているため、caseどのイメージをチェックしても問題ありません。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;
    }
于 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

これはかなり簡単に実装できるはずです

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 に答える
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 に答える