2011-06-08 62 views
1

我有一個腳本,用於說明某個元素在特定頁面上時不顯示。下面是我使用的代碼:if語句中的多個鏈接

<script type="text/javascript"> 
    function callOnPageLoad() 
    { 
    var url = window.location.href; 
    if(url == "http://www.exampledomain.com") 
    { 
    document.getElementById('rolex').style.display = 'none'; 
    } 
    } 
    </script>  

不過,我需要多放幾個URL的if語句,什麼是這樣做的正確方法嗎?

非常感謝

+0

[十佳JavaScript的書籍是初學者應該閱讀](http://www.tripwiremagazine.com/2010/03/top-10-best-javascript-books-that-be ginners-should-read.html) – 2011-06-08 10:40:10

+0

該代碼存在很多潛在的問題休,試着在地址欄中使用大寫字母,刪除www,禁用JS等等。 – 2011-06-08 10:45:03

回答

0
if(url == "http://www.exampledomain.com" || url == "http://www.anotherdomain.com") 
{ 
} 
2

我preffer產生關聯數組,然後檢查字符串設置。它可以從AJAX來獲得,從不同的腳本等,並且不hradcoded成如果

<script type="text/javascript"> 
    var urlArray = { "http://www.exampledomain.com" : true, "http://www.exampledomain.com/foobar.html" : true }; 
    function callOnPageLoad() 
    { 
    var url = window.location.href; 
    if(urlArray[url]) 
    { 
    document.getElementById('rolex').style.display = 'none'; 
    } 
    } 
    </script>  
+1

請注意,對象默認具有一堆屬性所以像「toString」或「eval」這樣的「URL」也會被接受。爲了防止使用'if(urlArray.hasOwnProperty(url))'而不是'if(urlArray [url])''。 – 2011-06-08 10:43:48

+0

我假設URL有http:// ...,所以它是無效的屬性名稱,但好點 – SergeS 2011-06-08 10:57:16

+0

+1,我認爲這可能比其他建議(多個操作符,循環中的多個操作符)更快。當然,性能上的差異並不成問題,但是... – roirodriguez 2011-06-08 10:57:56

0

在如果塊添加多個條件:

<script type="text/javascript"> 
    function callOnPageLoad() 
    { 
    var url = window.location.href; 
    if(url == "http://www.exampledomain.com" || url == "anotherurl" || url == "andanother") 
    { 
    document.getElementById('rolex').style.display = 'none'; 
    } 
    } 
    </script> 
0

具有網址的陣列,並且迭代

function callOnPageLoad() 
{ 
    var urls = [ 
     "http://www.exampledomain.com", 
     "http://www.exampledomain2.com" 
    ]; 
    var url = window.location.href; 
    for (var i=0; i < urls.length; i++) { 
     if(url == urls[i]) 
     { 
      document.getElementById('rolex').style.display = 'none'; 
      break; 
     } 
    } 

} 
+0

我認爲使用「in」運算符比使用循環更好 – Oyeme 2011-06-08 10:46:00

+0

你有一些基準「in」比for循環快嗎? – DanielB 2011-06-08 10:51:54

0

你可以創建一個這些urls的數組,並運行for循環思考他們,這將是更動態的方法來解決你的問題。

使用長if語句不advisible因爲如果你的URL指向外部URL,你可以鬆在這裏的字符或有點邏輯存在的

或匹配,您可以從您可以使用其他網址區分其他模式它沒有數組。

0
function callOnPageLoad(type) 

    { 
     var url = window.location.href; 
      var urls=new array("http://www.exampledomain1com","http://www.exampledomain2.com");  


     if(url in urls){ 
      document.getElementById('rolex').style.display = 'none'; 
     } 
    } 
+0

你測試了這個嗎?你真的認爲它有效嗎? – KooiInc 2011-06-08 11:18:28

+0

現在它的工作..我的錯誤;) – Oyeme 2011-06-08 13:22:32

+0

告訴我一個地方它的工作呢?這不:http://jsfiddle.net/KooiInc/nTyms/ – KooiInc 2011-06-08 14:14:46

0

if(url == "http://www.exampledomain.com" || url =="http://www.url2.com" || url == "http://www.url3.com")等等......?

0

我會使用一個switch語句或正則表達式測試儀:

開關

//this exaple function hides when the url is www.hideOne.com or www.hideTwo.com, 
//in other cases does nothing. 
function callOnPageLoad() { 
    var url = window.location.href, 
     rolex = document.getElementById('rolex'); 
    switch (url) { 
    case "http://www.hideOne.com" : 
    case "http://www.hideTwo.com" : rolex.style.display = 'none'; break; 
    case "http://www.rolexshow.com" : 
    case "http://www.rolexshow2.com" : 
    default: break; 
    } 
} 

正則表達式

function callOnPageLoad() { 
     var url = window.location.href, 
      rolex = document.getElementById('rolex'); 

     rolex.style.display = 
      /hideone\.com|'hidetwo\.com/i.test(url) 
      ? 'none' : ''; 
}