0

このコード ブロックで次のコードを非表示にする必要があります。機能を削除するのではなく、ゲストから見えないようにするだけです。

<style>.NoScript { display: none; }</style>
<noscript>
   <style>.NoScript { display: block; } .YesScript { display: none; }</style>
</noscript>
            <div class="P NoScript">
       <?php echo $Form->RadioList('Type', array('Question' => 'Ask a Question', 'Discussion' => 'Start a New Discussion')); ?>
    </div>
    <div class="YesScript">
       <div class="Tabs">
          <ul>
             <li class="<?php echo $Form->GetValue('Type') == 'Question' ? 'Active' : '' ?>"><a id="QnA_Question" class="QnAButton TabLink" rel="Question" href="#"><?php echo T('Ask a Question'); ?></a></li>
             <li class="<?php echo $Form->GetValue('Type') == 'Discussion' ? 'Active' : '' ?>"><a id="QnA_Discussion" class="QnAButton TabLink" rel="Discussion" href="#"><?php echo T('Start a New Discussion'); ?></a></li>
          </ul>
       </div>
    </div>

現在、「質問する」と「新しいディスカッションを開始する」の 2 つのタブが表示されているためです。上記のコードを変更して、これらが表示されないようにするにはどうすればよいですか?

4

3 に答える 3

2

visibilityプロパティを変更する必要があります

<style>.NoScript { visibility: hidden; }</style>
于 2013-03-13T16:39:01.680 に答える
2

あなたが何を隠そうとしているのか完全にはわかりませんが、それは次のように簡単です

<?php if (/* user is not guest */) : ?>
  <div class="Tabs">
      <ul>
         <li class="<?php echo $Form->GetValue('Type') == 'Question' ? 'Active' : '' ?>"><a id="QnA_Question" class="QnAButton TabLink" rel="Question" href="#"><?php echo T('Ask a Question'); ?></a></li>
         <li class="<?php echo $Form->GetValue('Type') == 'Discussion' ? 'Active' : '' ?>"><a id="QnA_Discussion" class="QnAButton TabLink" rel="Discussion" href="#"><?php echo T('Start a New Discussion'); ?></a></li>
      </ul>
   </div>
<?php endif; ?>

これで十分でない場合は、次のようにして可視性を非表示に設定できます。

<li class="alldatphpcode" <?php if (/*is a guest*/) echo "style='visibility: hidden;'"?>/>

最初のものは、ユーザーがゲストの場合はおそらくそれを実行できないという意味で、その機能を効果的に削除すると思います.2番目のものは、表示を停止するだけですが、ソースには引き続き表示されます.

于 2013-03-13T16:34:31.520 に答える
0

noscript ブロックに埋め込まれた css に依存するのではなく、JS を使用して非表示/表示ロジックを実行する必要があります。noscript フォームをデフォルトで表示に、スクリプト依存のフォームを非表示に、次に JS のチャンクでこれらの状態を反転します。

<style>
    .hiddenform { display: none }
</style>

<div id="nocript">.... form for the JS-deprived</div>
<div id="withscript" class="hiddenform">... form for JS-enabled users</div>

<script type="text/javascript">
   document.getElementById('withscript').setAttribute('class', ''); // remove hiddenform
   document.getElementById('noscript').setAttribute('class', 'hiddenform');
</script>
于 2013-03-13T16:38:25.577 に答える