在 html class 内调用 if 语句
Call if statement within html class
我正在尝试创建一个动态导航,其中一个简单的 if 语句用于检查当前页面是否等于当前 url.This 将在 html class 如果这些东西匹配。当我测试我的代码时,我看到整个 php 语句与 html 一起打印出来。我错过了什么,或者这可能是我尝试解决它的方式吗?
-谢谢
<?php
$menu = array(
'home' => array('text' => 'home', 'url' => '/'),
'about' => array('text' => 'about', 'url' => '/about'),
'contact' => array('text' => 'contact', 'url' => '/contact'),
);
$navbar = "navbar";
function GenerateMenu($items, $class) {
$currentpage = $_SERVER['REQUEST_URI'];
$selected = "selected";
$html = "<nav class = '$class'>\n";
foreach ($items as $key => $item) {
$html .= "\t<a id = '{$item['text']}' class = '<?php if(preg_match({$item['url']}, $currentpage)) echo $selected; ?> ' href = '{$item['url']}'> {$item['text']} ";
}
$html .= "</a>\n"
. "</nav>\n";
return $html;
};
echo GenerateMenu($menu, $navbar);
?>
用以下代码替换您的代码:
<?php
$menu = array(
'home' => array('text' => 'home', 'url' => '/'),
'about' => array('text' => 'about', 'url' => '/about'),
'contact' => array('text' => 'contact', 'url' => '/contact'),
);
$navbar = "navbar";
function GenerateMenu($items, $class) {
$currentpage = $_SERVER['REQUEST_URI'];
$html = "<nav class = '".$class."'>\n";
foreach ($items as $key => $item) {
$selected = (preg_match({$item['url']}, $currentpage)) ? "selected" : "";
$html .= "\t<a id = '".{$item['text']}."' class = '".$selected."' href = '".{$item['url']}."'> ".{$item['text']}." </a>\n";
}
$html .= "</nav>\n";
return $html;
};
echo GenerateMenu($menu, $navbar);
?>
试试这个..
$html .= "\t<a id = '{$item['text']}' class = '".if(preg_match({$item['url']}, $currentpage)) echo $selected;."' href = '{$item['url']}'> {$item['text']} ";
并且对于申请活动class你为什么不使用如下所示的jquery..
var loc = window.location.pathname;
$('#nav').find('a').each(function() {
$(this).toggleClass('active', $(this).attr('href') == loc);
});
希望这对您有所帮助..
将你的函数改成这个
function GenerateMenu($items, $class) {
$currentpage = $_SERVER['REQUEST_URI'];
$html = "<nav class = '$class'>\n";
foreach ($items as $key => $item) {
$selected = '';
if(preg_match({$item['url']}, $currentpage))
{
$selected = "selected";
}
$html .= "\t<a id='{$item['text']}' class='{$selected}' href='{$item['url']}'> {$item['text']} ";
}
$html .= "</a>\n"
. "</nav>\n";
return $html;
};
找到了可行的解决方案。
<?php
$menu = array(
'home' => array('text' => 'home', 'url' => '/'),
'about' => array('text' => 'about', 'url' => '/about/'),
'contact' => array('text' => 'contact', 'url' => '/contact/'),
);
$navbar = "navbar";
function GenerateMenu($items, $class) {
$currentpage = $_SERVER['REQUEST_URI'];
$html = "<nav class = '$class'>\n";
foreach ($items as $item) {
//$selected = (preg_match('$item['url']', $currentpage)) ? 'selected' : null;
if($item['url'] == $currentpage)
{
$selected = 'selected';
}
else
{
$selected = " ";
}
$html .= "\t<a id = '{$item['text']}' class = '{$selected}' href = '{$item['url']}'> {$item['text']} ";
}
$html .= "</a>\n"
. "</nav>\n";
return $html;
};
echo GenerateMenu($menu, $navbar);
?>
我正在尝试创建一个动态导航,其中一个简单的 if 语句用于检查当前页面是否等于当前 url.This 将在 html class 如果这些东西匹配。当我测试我的代码时,我看到整个 php 语句与 html 一起打印出来。我错过了什么,或者这可能是我尝试解决它的方式吗?
-谢谢
<?php
$menu = array(
'home' => array('text' => 'home', 'url' => '/'),
'about' => array('text' => 'about', 'url' => '/about'),
'contact' => array('text' => 'contact', 'url' => '/contact'),
);
$navbar = "navbar";
function GenerateMenu($items, $class) {
$currentpage = $_SERVER['REQUEST_URI'];
$selected = "selected";
$html = "<nav class = '$class'>\n";
foreach ($items as $key => $item) {
$html .= "\t<a id = '{$item['text']}' class = '<?php if(preg_match({$item['url']}, $currentpage)) echo $selected; ?> ' href = '{$item['url']}'> {$item['text']} ";
}
$html .= "</a>\n"
. "</nav>\n";
return $html;
};
echo GenerateMenu($menu, $navbar);
?>
用以下代码替换您的代码:
<?php
$menu = array(
'home' => array('text' => 'home', 'url' => '/'),
'about' => array('text' => 'about', 'url' => '/about'),
'contact' => array('text' => 'contact', 'url' => '/contact'),
);
$navbar = "navbar";
function GenerateMenu($items, $class) {
$currentpage = $_SERVER['REQUEST_URI'];
$html = "<nav class = '".$class."'>\n";
foreach ($items as $key => $item) {
$selected = (preg_match({$item['url']}, $currentpage)) ? "selected" : "";
$html .= "\t<a id = '".{$item['text']}."' class = '".$selected."' href = '".{$item['url']}."'> ".{$item['text']}." </a>\n";
}
$html .= "</nav>\n";
return $html;
};
echo GenerateMenu($menu, $navbar);
?>
试试这个..
$html .= "\t<a id = '{$item['text']}' class = '".if(preg_match({$item['url']}, $currentpage)) echo $selected;."' href = '{$item['url']}'> {$item['text']} ";
并且对于申请活动class你为什么不使用如下所示的jquery..
var loc = window.location.pathname;
$('#nav').find('a').each(function() {
$(this).toggleClass('active', $(this).attr('href') == loc);
});
希望这对您有所帮助..
将你的函数改成这个
function GenerateMenu($items, $class) {
$currentpage = $_SERVER['REQUEST_URI'];
$html = "<nav class = '$class'>\n";
foreach ($items as $key => $item) {
$selected = '';
if(preg_match({$item['url']}, $currentpage))
{
$selected = "selected";
}
$html .= "\t<a id='{$item['text']}' class='{$selected}' href='{$item['url']}'> {$item['text']} ";
}
$html .= "</a>\n"
. "</nav>\n";
return $html;
};
找到了可行的解决方案。
<?php
$menu = array(
'home' => array('text' => 'home', 'url' => '/'),
'about' => array('text' => 'about', 'url' => '/about/'),
'contact' => array('text' => 'contact', 'url' => '/contact/'),
);
$navbar = "navbar";
function GenerateMenu($items, $class) {
$currentpage = $_SERVER['REQUEST_URI'];
$html = "<nav class = '$class'>\n";
foreach ($items as $item) {
//$selected = (preg_match('$item['url']', $currentpage)) ? 'selected' : null;
if($item['url'] == $currentpage)
{
$selected = 'selected';
}
else
{
$selected = " ";
}
$html .= "\t<a id = '{$item['text']}' class = '{$selected}' href = '{$item['url']}'> {$item['text']} ";
}
$html .= "</a>\n"
. "</nav>\n";
return $html;
};
echo GenerateMenu($menu, $navbar);
?>