2017-06-01 119 views
0

我不知道如何解釋我的問題,所以這裏有更多的解釋......我需要解決的問題:僅限於在頁面A,B和C上顯示此腳本。它們是wordpress頁面,因此我不能將腳本粘貼到每個頁面中。我寫了這個腳本:如果URL包含字符串「字符串A」或「字符串B」或「字符串C」,請執行此操作

if(window.location.href.indexOf("url-string-a") > -1){ 
    jQuery("form").addClass("active"); 
} 

但我不知道如何將它應用到多個URL而沒有複製和粘貼這3次。 (在我的實際場景中,這個腳本需要在10個頁面上運行,所以我不想複製和粘貼這10次,我確信有這樣做的更簡單的方法。)

謝謝!

回答

2

當您考慮複製粘貼時,應該考慮一些函數,這些函數應該包裝您要一遍又一遍地重複的代碼。一種可能的方法:

function containsAny(haystack, needles) { 
    return needles.some(function(str) { 
    return haystack.indexOf(str) > -1; 
    }); 
} 

在這裏,你創建了一個函數有兩個參數:haystack(串)和needles(字符串數組),前者將被檢查是否有後者。

然後,只需使用此函數內部if檢查:

if (containsAny(location.href, ['url-string-a', 'url-string-b', ...])) { 
    $('form').addClass('pnt'); 
} 
+0

我得到一個錯誤「未捕獲的ReferenceError:containsAny沒有定義」 – nthChild

+0

我覺得用some'的'是該解決方案的重要組成部分許多人不會很熟悉。 – Anthony

+0

@nthChild - 你在那個腳本中定義了函數嗎? – Anthony