0

誰でもこのJavascriptの問題を解決するのを手伝ってもらえますか:

現在の Web サイトのホスト名に基づいていくつかの 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 は大文字と小文字が区別されるということです。2 つ目は、要素が完全に読み込まれる前に要素にアクセスしようとしていることです。コードを次のように変更します。

<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

window.location.host の代わりに window.location.hostname を使用します。また、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>
于 2013-06-02T12:54:43.383 に答える
0

大文字の「I」文字があります->「i」に置き換えます...したがって、「if」である必要があります。

于 2013-06-02T12:14:28.307 に答える
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 に答える