在Javascript中比较2个Image的源代码

时间:2015-10-28 15:19:48

标签: javascript comparison-operators

我正在尝试比较2张图片,看看它们是否相同。我对此做了很多研究,无法得出有效的结论。以下是我现在所拥有的一个例子:

var image1 = document.getElementById('imgId1');
var image2 = document.getElementById('imgId2');
if(image1.src.match(image2.src)) {   <---This seems to only work w/ a string

  //do whatever here
}

我还尝试了其他一些事情,例如:

if(image2.src.indexOf(image1.src)!= -1)
{
    //do whatever here
}

if(image2.src == image1.src)
{

}

if(image2.src === image1.src)
{

}

我尝试过使用单引号,双引号,没有引号..我之前没有使用过Javascript类,所以这种比较对我来说是新的。任何帮助都会很棒,谢谢。

完整代码 -

<script language="javascript">

function changeImage1() {

    var num = Math.floor((Math.random() * 48) + 1);
    var n = num.toString();
    var numImg = n.concat(".jpeg");
    var string = "/blah/blah/"
    var final = string.concat(numImg);
    var image = document.getElementById('imgClickAndChange1');
    var image2 = document.getElementById('imgClickAndChange2');
    if(image.src.match("blah.jpg")) {
        var num2 = Math.floor((Math.random() * 48) + 1);
        var n2 = num2.toString();
        var numImg2 = n2.concat(".jpeg");
        var final2 = string.concat(numImg2);
        image2.src = final2;
        image.src = final;
        if(image2.src == image.src){
            num2 = Math.floor((Math.random() * 48) + 1);
            n2 = num2.toString();
            numImg2 = n2.concat(".jpeg");
            final2 = string.concat(numImg2);
            image2.src = final2;
        }
    } else {
        image.src = final;
        if(image.src == image2.src){
            num = Math.floor((Math.random() * 48) + 1);
            n = num.toString();
            numImg = n.concat(".jpeg");
            final = string.concat(numImg);
            image.src = final;
        }

    }
}

我意识到在第二兰特之后图像仍然有可能是相同的。 - 脚本仍将在第一遍中将图像设为相同

1 个答案:

答案 0 :(得分:-1)

双等于'=='应该没问题。当它无法看到什么时,请尝试输出值。

if(image2.src == image1.src)
{

}
else
{
    console.log([image2.src, image1.src]);
    alert("They did not match because 1 is " + image1.src + " and 2 is " + image2.src);
}