我在创建php if语句时遇到问题,以满足我对导航选择的需求。 每当用户从一个页面移动到另一个页面时,我希望导航按钮的CSS改变,特别是匹配用户当前正在查看的页面。这是通过使用URL完成的。
columns = nav的默认CSS。 选中=页面选择导航的CSS。
我一直在编写一段代码来完成这项工作。目前,它使用URL来搜索所需的字符串; $find1 ='index
。
我通过将$ selector变量设置为导航的默认样式来初始化代码,将其默认为未被查看的页面。然后它获取URL并搜索字符串;然后用它来启动if语句;变量$ selector的位置变为$selector = 'selected'
<?php $selector = 'columns'; ?>
<?php
$path1 = $_SERVER['REQUEST_URI'];
$find1 = 'index';
$pos1 = strpos($path1, $find1);
if ($pos1 !== false): $selector = 'selected'; ?>
<a href="index.php"><div id="<?php echo $selector;?>">Home</div></a><?php endif ?>
加载页面后,特定的导航按钮会显示正确的CSS。但是,不会显示其他导航按钮,暗示$ selector未被设置为该事件的任何内容。
然后我尝试了另一种编码函数的方法;
我在所有变量中添加了“2”以确保重复和故障不是问题,以及更改页面名称:
<?php $selector2 = 'columns'; ?>
<?php
$path2 = $_SERVER['REQUEST_URI'];
$find2 = 'about';
$pos2 = strpos($path2, $find2);
if ($pos2 !== false): $selector2 = 'selected'; else: $selector2 = 'columns';?>
<a href="about.php"><div id="<?php echo $selector2;?>">About</div></a><?php endif ?>
这次加载“索引页面”时,导航按钮都消失了。
我不确定在使用此代码时出错的地方或方式,但我确信这取决于我的if语句。
如果有人帮助重新创建或重新编写此代码以使其工作或更接近工作,我将不胜感激!
先谢谢你们。
答案 0 :(得分:2)
最后您的<?php endif ?>
包含您的HTML,因此w if ($pos2 !== false):
为真,您的HTML不会显示。
<?php $selector2 = 'columns'; ?>
<?php
$path2 = $_SERVER['REQUEST_URI'];
$find2 = 'about';
$pos2 = strpos($path2, $find2);
if ($pos2 !== false): $selector2 = 'selected'; else: $selector2 = 'columns'; endif; ?>
<a href="about.php"><div id="<?php echo $selector2;?>">About</div></a>
答案 1 :(得分:0)
感谢您之前的回答!我找到了另一种选择;因此,我将其列为另一个答案。
首先,通过为站点上链接到彩色导航栏的每个页面设置“页面变量”来继续。例如;在索引页面上,变量集将等于“index”。
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<?php $thisPage = 'index' ?>
在导航包含中,必须将以下脚本添加到每个href或div标记中(但是您可能已经列出了它们):
<a href="index.php"><div <?php if ($thisPage=="index") {
echo " id=\"selected\""; } else { echo " id=\"columns\""; } ?> >Home</div></a>
此代码采用页面上设置的变量的名称,并询问天气等于某个值或字符串。如果匹配,则“id = \”选中的“”将在包含导航按钮的div标签内回显。
如果它不包含所需的字符串或值,它将改为(else),将“id = \”columns \“”回显到导航按钮所在的位置。
我在Chrome中出现了间歇性错误,对于一个未识别的索引,奇怪的是,对于“”id = \“columns \”“”,为了解决此问题,我只是简单地播放了球并将值添加为变量。{ {1}}。我知道这个变量不会被使用,也不会导致任何进一步的错误。它解决了这个问题。