Php 标记中的onclick属性<;a>;工作不正常
我有一个菜单,可以从数据库中获取菜单项。 我想获得以下每个菜单中单击菜单的菜单id:Php 标记中的onclick属性<;a>;工作不正常,php,html,onclick,Php,Html,Onclick,我有一个菜单,可以从数据库中获取菜单项。 我想获得以下每个菜单中单击菜单的菜单id: public function gen_menu($menuItems, $pId = 0) { $menu = ''; $ulStart = 0; $base_url = base_url(); $uri = $this->uri->segment(1); foreach($menuItems as $row) {
public function gen_menu($menuItems, $pId = 0)
{
$menu = '';
$ulStart = 0;
$base_url = base_url();
$uri = $this->uri->segment(1);
foreach($menuItems as $row)
{
if($row->parent_id==$pId)
{
if($ulStart==0) { $menu .= "<UL>"; $ulStart++; }
$url = $row->item_url;
stripos($url,$base_url)===0 || $url==""?$base_url = base_url():$base_url="";
{
if($row->external==1){
$menu .= '<LI><a href="'.$row->custom_url.'" title="'.$row->alt_title.'">'.$row->item_title.'</a>'.$this->gen_menu($menuItems, $row->item_id).'</LI>';
}
else{
$class = ($uri==$row->custom_url)?"class='selected'":"";
$menu .= '<LI '.$class.'><a href="'.site_url($row->custom_url).'/'.$row->item_id.'" title="'.$row->alt_title.'" onclick="'.$this->get_id($row->item_id).'">'.$row->item_title.'</a>'.$this->gen_menu($menuItems, $row->item_id).'</LI>';
}
}
}
}
if($ulStart!=0) { $menu .= "</UL>"; }
return $menu;
}`
公共功能genu菜单($menuItems,$pId=0)
{
$menu='';
$ulStart=0;
$base_url=base_url();
$uri=$this->uri->segment(1);
foreach($menuItems作为$row)
{
如果($row->parent_id==$pId)
{
如果($ulStart==0){$menu.=“”;$ulStart++;}
$url=$row->item\u url;
stripos($url,$base\u url)==0 | |$url==“”?$base\u url=base\u url():$base\u url=“”;
{
如果($row->external==1){
$menu.='- 。$this->gen_菜单($menuItems,$row->item_id)。'
;
}
否则{
$class=($uri==$row->custom_url)?“class='selected'”:;
$menu.='- '.$this->gen\u菜单($menuItems,$row->item\u id)。'
';
}
}
}
}
如果($ulStart!=0){$menu.=“
”;}
返回$menu;
}`
当我使用onclick-in时,它总是返回表的最后一个id。试试这个:
$menu .= '<LI '.$class.'><a href="'.site_url($row->custom_url).'/'.$row->item_id.'" title="'.$row->alt_title.'" onclick="javascript:get_id('.$row->item_id.');">'.$row->item_title.'</a>'.$this->gen_menu($menuItems, $row->item_id).'</LI>';
$menu.=''.$this->gen_菜单($menuItems,$row->item_id)。' ;
您在带引号的字符串中有$row->item\u id
,因此它没有展开。你应该从中得到一个javascript错误
更新:
您遇到的问题是混淆了服务器端和客户端操作。当创建要发送给用户的页面时,此PHP脚本中的代码都在服务器上运行。如果在循环中设置会话变量,该变量将包含上一次迭代的值。将PHP代码放入onclick
不会在用户单击时运行,而是在服务器编写onclick
属性以放入发送到浏览器的HTML时运行
如果希望在用户单击时在服务器上执行某些操作,则需要在
onclick
属性中添加一个Javascript函数,该函数应使用AJAX调用另一个PHP脚本。PHP是一种服务器端语言。你的意思是当浏览器导航到此脚本时?完成后,是否可以转储$菜单?returend$菜单是一个带有子菜单的样式化菜单。我唯一需要的是,如何使用onclick-in标记我在你的A
中没有看到onclick
属性。哦,对不起,我刚刚删除了它。。。。这里是汉克斯。。。我只是在post中编辑代码。正如我所说,onclick正在工作,但无论单击哪个菜单,它都会返回表菜单的最后一项。\u id()method.function get\u id($id=0){$this->session->set\u userdata($menu id',$id);}$id总是像338一样,Table的最后一个id将该函数的返回值放入onclick
属性,该属性应该包含Javascript语句。PHP中的所有内容都在服务器创建页面时运行,而不是在用户与页面交互时运行。如果要运行服务器代码以响应用户操作,则需要使用AJAX。