0

谁能帮我解决这个 Javascript 问题:

我需要根据当前网站的主机名显示几个 div 组件,并且只需要在页面的初始加载期间执行此操作。我为此开发了一个 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>
4

5 回答 5

3

使用if而不是If这样

if(hostName.indexOf('w3schools') !== -1)
于 2013-06-02T12:13:17.083 回答
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>
于 2013-06-02T12:30:48.660 回答
0

你有大写的“I”字母->用“i”替换它......所以,应该是'if'。

于 2013-06-02T12:14:28.307 回答
0

我会使用 window.location.hostname 而不是 window.location.host,typeof(window.location.hostname) return 'string' 所以你不需要在 if 语句中用 String 包装主机名

<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>
于 2013-06-02T12:54:43.383 回答
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';
}
于 2013-06-02T14:04:51.697 回答