使用PHP隐藏/显示HTML内容


Hide/Show HTML content using PHP

我是PHP的新手,我正在尝试在HTML文件中运行一段PHP代码。

我有一个下拉菜单。如果用户选择了一个项目,它应该显示其他字段。因此,我希望他们只在从下拉菜单中选择该项目时显示。我正试图根据该下拉项的值来选择它。我没有在PHP脚本中声明任何PHP值。这都是HTML格式的。

我知道使用jquery,在运行脚本之前,必须先引入jquery库。我也需要用PHP来做这件事吗?

这是我试图运行的代码:

提前谢谢!

html file
<?php
  if ($dropmenuValue == specificDropDownOption) {
?>
  <div>
    -conditional content-
  </div>
<?php
  }
?>

PHP和其他服务器端语言的一个主要特点是,一旦它们呈现页面,就会关闭,仅此而已。

在这里,您需要求助于客户端,最简单的方法可能是将PHP变量的值添加到适当的JavaScript变量中,然后从那里获取。您还需要呈现所有可能的内容,并且只显示您需要的内容。

因此,在您的情况下,您可以创建一个CSS类来表示隐藏的内容,然后使用JavaScript来隐藏/显示标记的不同部分。请注意,所有隐藏的代码(由PHP呈现,但由CSS隐藏)在页面源代码中仍然可见,因此,如果您有任何敏感内容,您应该通过调用AJAX加载部分内容或常规页面重定向/导航来执行。


编辑

下面是我为你做的一个超级简单的例子,看看你如何显示/隐藏内容:

HTML(当然,部分可以通过PHP渲染)

<div id="content1" class="content">Hey</div>
<div id="content2" class="content hidden">There</div>
<div id="content3" class="content hidden">World</div>
<hr />
<button onclick="show(1)">Show 1</button>
<button onclick="show(2)">Show 2</button>
<button onclick="show(3)">Show 3</button>

JS-

function show(id) {
    // select all the content divs
    var allDivs = document.getElementsByClassName('content');
    // iterate over them and add a hidden class to each
    for (var i = 0; i < allDivs.length; i++){
        allDivs[i].classList.add('hidden');
    }
    // finally, remove the hidden class from the one we referenced
    document.getElementById('content' + id).classList.remove('hidden');
}

请在此处查看其实际操作:http://jsfiddle.net/f0onk7bk/

你可以用这个试试。。。在PHP 中使用HTML时

#item { display: block;}

#itme.active { display:none  }

当加载/重新加载页面时,类似的操作会起作用。。。

<?php
  if(isset($_POST['dropdown_name_here']) && $_POST['dropdown_name_here'] == "specificParameter")
  {
     echo("<div id='condition_one_div'> ... </div>");
  }
  else
  {
    echo("<div id='condition_two_div'> ... </div>");
  }
?>

但我认为JavaScript是您想要用于动态内容的。

var div = document.getElementById('div_name_here');
var dropdown = document.getElementById('dropdown_name_here');
if(dropdown.value == "specificParameter")
{
    //add/show content for div here
}
else
{
    //hide content for div here
}

这就是你要找的吗?

<select id='dropdown_name' onchange='if(this.value == "parameter"){ document.getElementById("div_name").style.display = "block"; }else{ document.getElementById("div_name").style.display = "none"; }' >
</select>