2013-06-02 46 views
0

任何人都可以請幫我解決此Javascript問題:無法根據if語句,顯示事業部

我需要根據當前網站的主機名,以顯示幾格成分,只需要在初始負載要做到這一點這一頁。我爲此開發了一個Javascript代碼,但無法以所需的方式顯示/隱藏div組件。

以下Javascript代碼總是在控制檯上出現「Uncaught SyntaxError:Unexpected token else」錯誤。

<html> 
    <head> 
     <script> 

      var hostName = window.location.host; 

      var div1 = document.getElementById('iframePortal'); 
      var div2 = document.getElementById('iframeNormal'); 

      If(String(hostName).indexOf('w3schools') !== -1) 
      { 
      document.getElementById('iframePortal').style.display = 'block'; 
      document.getElementById('iframeNormal').style.display = 'none'; 
      } 
      else { 
      document.getElementById('iframePortal').style.display = 'none'; 
      document.getElementById('iframeNormal').style.display = 'block'; 
      } 
     </script> 
    </head> 
    <body> 
     <div id="iframeNormal"> 
      some text 1 
     </div> 
     <div id="iframePortal"> 
      another 1 


      </div> 
     </body> 
    </html> 
+1

'If'should是小寫。 – moonwave99

+3

JavaScript區分大小寫,它必須是小寫的'if'。一旦你解決了這個問題,你將會遇到另一個問題:你試圖在元素存在之前訪問這些元素。請參閱* [爲什麼jQuery或諸如'getElementById'的DOM方法未找到該元素?](http://stackoverflow.com/q/14028959/218196)*解決方案。 –

+0

提示:由於您手中已經有'div1'和'div2',因此您不需要每次在'if'和'else'塊中查詢DOM。 – Vadim

回答

3

使用if代替If這樣

if(hostName.indexOf('w3schools') !== -1) 
+0

ahhh ..非常感謝Sachin指出它.. – user1206

0

你有大寫字母 「I」 字母 - >與 「我」 ......所以,應該是 '如果' 替換它。

+0

感謝很多朋友指出它.. – user1206

2

首先是js是大小寫敏感的,因爲他們告訴你。第二件事是你正試圖訪問元素,然後才能完全加載。修改代碼以:

<html> 
    <head> 
    </head> 
    <body> 
     <div id="iframeNormal"> 
      some text 1 
     </div> 
     <div id="iframePortal"> 
      another 1 


      </div> 

     <script> 

      var hostName = window.location.host; 

      var div1 = document.getElementById('iframePortal'); 
      var div2 = document.getElementById('iframeNormal'); 

      if(String(hostName).indexOf('w3schools') !== -1) 
      { 
      document.getElementById('iframePortal').style.display = 'block'; 
      document.getElementById('iframeNormal').style.display = 'none'; 
      } 
      else { 
      document.getElementById('iframePortal').style.display = 'none'; 
      document.getElementById('iframeNormal').style.display = 'block'; 
      } 
     </script> 
     </body> 
    </html> 
+0

是的..我認識到第二個問題,只要我固定第一個..感謝很多隊友回答這..我非常感謝你的幫助和支持:) – user1206

0

我會用window.location.hostname代替window.location.host, 也typeof運算(window.location.hostname)返回字符串「」的,所以你不需要換主機名if語句字符串

<script> 
    var div1 = document.getElementById('iframePortal'); 
    var div2 = document.getElementById('iframeNormal'); 

    if(window.location.hostname.indexOf('w3schools') >= 0){ 
    div1.style.display = 'block'; 
    div2.style.display = 'none'; 
    }else{ 
    div1.style.display = 'none'; 
    div2.style.display = 'block'; 
    } 
</script> 
0

這裏是一個工作的jsfiddle:http://jsfiddle.net/rsFPF/

我不得不使用一些CSS了。請試一試。

不要使用jsFiddle?下面是代碼:

HTML:

<div id='iframeNormal' class='iframes'> some text 1 </div> 
<div id='iframePortal' class='iframes'> another 1 </div> 

CSS:

.iframes 
{ 
    display: none; 
} 

的javascript:

var div1 = document.getElementById('iframeNormal'); 
var div2 = document.getElementById('iframePortal'); 

if (window.location.host.indexOf('w3schools') !== -1) 
{ 
div1.style.display = 'block'; 
} 
else 
{ 
div2.style.display = 'block'; 
}