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>

因为现在显示了两个选项卡:一个用于“提出问题”,一个用于“开始新讨论”。我怎样才能通过修改上面的代码来隐藏这些出现?

4

3 回答 3

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;'"?>/>

我认为第一个有效地删除了该功能,因为如果他们是客人,用户不可能做到这一点,第二个只是停止它的显示,但仍会显示在源中。

于 2013-03-13T16:34:31.520 回答
2

您需要修改visibility属性

<style>.NoScript { visibility: hidden; }</style>
于 2013-03-13T16:39:01.680 回答
0

您应该使用 JS 来执行隐藏/显示逻辑,而不是依赖隐藏在 noscript 块中的 css。默认 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 回答