2016-09-02 58 views
0

使用以下腳本,我正在瀏覽頁面上的每個img源,檢索擴展名,如果沒有返回的字符串,或不知道圖像類型,然後我添加.jpg添加圖像擴展當沒有一個

由於某些原因,if語句每次都是正確的,不管擴展名是什麼。

$(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

你可以分享可執行的演示/片段或[JSFiddle](https://jsfiddle.net/)嗎? [_創建一個最小,完整和可驗證的示例_](http://stackoverflow.com/help/mcve) – Rayon

+0

你的日誌說明imgext的值是什麼? – Pat

+0

日誌會輸出擴展名,例如jpg – wadie

回答

1

簡單修復代碼中的錯誤。

只要將OR條件更改爲AND條件,它就可以工作。

更改這一部分:

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

這樣:

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

在這種情況下使用OR條件當它不工作,因爲imgext將始終不等於同時3個不同的值的建議。因此,它總是會成真的。使用AND時,只有在與三者中任何一個的值不相等的情況下才會接受。應該管用。

+0

它正在工作。會愛你有一個解釋..爲什麼我的方法沒有按照預期工作?編輯:是的,顯然我的邏輯不準確..:/ thx! – wadie

+0

無論如何增加了一個解釋:) –

+0

是的假設如果1)imgext = txt比你的'if'值是'true ||真|| true = true' 2)如果imgext = jpg,則返回false ||真|| true = true'。所以結果總是「真實的」。如果在兩種情況下使用'!=',大多數情況下您必須使用'AND'運算符。 – Vijai

相關問題