2016-09-02 2 views
0

Mit dem folgenden Skript gehe ich durch jede img-Quelle, die ich auf der Seite habe, die Erweiterung abrufen und wenn es keine zurückgegebene Zeichenfolge oder nicht einen bekannten Bildtyp gibt, dann füge ich hinzu .jpgHinzufügen von Bild-Erweiterung, wenn es keine gibt

Aus irgendeinem Grund ist die if-Anweisung unabhängig von der Erweiterung jedes Mal wahr.

$(document).ready(function() {   
$(".main_img").each(function() { 
     imgsrc = this.src; 
     console.log(imgsrc); 
     imgext = imgsrc.split('.').pop(); 
     $.trim(imgext); 
     console.log(imgext); 
      if(imgext != 'jpg' || imgext != 'jpeg' || imgext != 'gif'){ 
      console.log("Unacceptable,add extension"); 
      FinalURL = imgsrc + '.jpg'; 
     } 
      else { 
      console.log(imgext); 
     } 
    }); 
}); 
+0

Können Sie ausführbare Demo/Snippet oder [JSFiddle] (https://jsfiddle.net/) teilen? [_Erstellen Sie ein minimales, vollständiges und überprüfbares Beispiel_] (http://stackoverflow.com/help/mcve) – Rayon

+0

Was sagen Ihre Protokolle zu dem imgext-Tal? – Pat

+0

Das Protokoll gibt die Erweiterung aus, wie es sollte, zum Beispiel jpg – wadie

Antwort

1

Einfache Lösung für einen Fehler in Ihrem Code.

Ändern Sie einfach die OR-Bedingungen zu UND-Bedingungen, und es wird funktionieren.

Ändern Sie diesen Teil:

if(imgext != 'jpg' || imgext != 'jpeg' || imgext != 'gif') 

dazu:

if(imgext != 'jpg' && imgext != 'jpeg' && imgext != 'gif') 

Es funktioniert nicht, weil imgext immer unterschiedliche Werte gleichzeitig wie vorgeschlagen bei der Verwendung von OR-Bedingungen in diesem Fall nicht gleich 3 sein wird, . Daher wird es immer wahr werden. Mit AND wird es nur akzeptiert, wenn es nicht gleich dem Wert von einem der drei ist. Sollte arbeiten.

+0

Es funktioniert. Ich würde dich gerne eine Erklärung haben ... warum hat meine Vorgehensweise nicht so funktioniert wie beabsichtigt? EDIT: ja offensichtlich war meine Logik nicht genau ..:/thx! – wadie

+0

Trotzdem eine Erklärung hinzugefügt :) –

+0

Ja, nehme an, wenn 1) imgext = txt ist, dann sind deine 'if' Werte' true || wahr || true = true' 2) Wenn imgext = jpg, dann 'false || wahr || wahr = wahr '. Das Ergebnis ist also immer "wahr". Wenn Sie '! =' In zwei Bedingungen verwenden, müssen Sie meistens den Operator 'AND' verwenden. – Vijai

Verwandte Themen