2015-10-28 6 views
0

J'essaie de comparer 2 images pour voir si elles sont identiques. J'ai fait pas mal de recherches à ce sujet et je n'arrive pas à une conclusion utile. Voici un exemple de ce que j'ai maintenant:Comparer les sources de 2 images en Javascript

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 
} 

J'ai aussi essayé d'autres choses telles que:

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

et

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

} 

et

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

} 

J'ai essayé d'utiliser des guillemets simples, des guillemets doubles, n o citations .. Je n'ai pas suivi de cours de Javascript avant donc ce genre de comparaison est nouveau pour moi. Toute aide serait géniale, merci.

CODE COMPLET -

<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; 
     } 

    } 
} 

Je me rends compte qu'il ya encore une petite chance les images seront les mêmes après la 2ème rand. - Le script mettra toujours les images comme identiques dans la première passe

+0

Si elles ne correspondent pas en utilisant '==', elles ne correspondent pas. Avez-vous enregistré les deux valeurs de '.src' sur la console pour voir ce qu'elles sont réellement? Que commencent les sources dans le HTML? –

+0

Y at-il un problème avec l'une des tentatives que vous avez essayé? Pas tout à fait sûr de votre question. '===' est le moyen de tester les valeurs primitives pour l'égalité. Si vous n'êtes pas très familier avec JavaScript, pourquoi ne pas lire un tutoriel? http://eloquentjavascript.net/ * "J'ai essayé d'utiliser des guillemets simples, des guillemets, des guillemets." * Les guillemets indiquent une chaîne de caractères pour le * parser *. Ils ne font pas partie de la valeur, donc peu importe celui que vous utilisez. –

+1

@squint @FelixKling --- L'utilisation de ceci est de s'assurer que 2 des mêmes images n'apparaissent pas en même temps. Si elles sont identiques, on changera pour une image différente. Je sais que ça ne marche pas parce que 2 images apparaîtront toujours et seront les mêmes. Les sources dans le HTML commencent comme ça: '' – LearningProcess

Répondre

-1

Le double est égal à '=='. Essayez de sortir les valeurs quand elle ne voit pas ce qui se passe.

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); 
} 
+0

Ceci ne fournit pas de réponse à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire sous son article. –

+0

@LawrenceAiello bien sûr que c'est fait. Il lui a dit la façon correcte de comparer les cordes, ce qui était ce qu'il voulait. Le reste est juste l'avantage supplémentaire de savoir comment déboguer lorsque votre code ne montre pas ce que vous attendiez. – Christian