标记<a> doesnt work correctly</a>中的onclick属性

时间:2013-01-26 05:31:54

标签: 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)
    {
        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;
}`

当我使用onclick时,它总是返回表的最后一个id。

1 个答案:

答案 0 :(得分:0)

试试这个:

$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>';

您在引用的字符串中有$row->item_id,因此未展开。你应该从那里得到一个javascript错误。

更新:

您遇到的问题是服务器端和客户端操作混乱。此PHP脚本中的代码在创建要发送给用户的页面时都在服务器上运行。如果您在循环中设置会话变量,则变量将包含上次迭代的值。将PHP代码置于onclick内并不会在用户单击时运行它,当服务器组成onclick属性以将其放入发送到浏览器的HTML中时,它会运行它。

如果你想在用户点击时在服务器上做某事,你需要在onclick属性中放置一个Javascript函数,该函数应该使用AJAX来调用另一个PHP脚本。