我似乎无法理解为什么菜单项没有在我的asp.net菜单中调用javascript功能。当我单击菜单项时,菜单关闭,不再做任何事情。我的部分代码如下所示:
<asp:Panel runat="server" ID="MenuPanel" CssClass="MenuPanel" style="display: none">
<asp:Menu ID="MyMenu" runat="server" CssClass="Menu" ForeColor="Black"
BorderStyle="Double" BorderColor="Gray" BorderWidth="1px">
<StaticMenuItemStyle BackColor="#DBDDE0" CssClass="MenuItem" />
<StaticHoverStyle BackColor="#CCCDCE" />
<Items>
<asp:MenuItem Text='Item 1' Value="0" Selectable="true" NavigateUrl="javascript:alert('hello world 1')" ImageUrl="~/image1.gif"/>
<asp:MenuItem Text='Item 2' Value="1" Selectable="true" NavigateUrl="javascript:alert('hello world 2')" ImageUrl="~/image2.gif" />
</Items>
</asp:Menu>
</asp:Panel>
更新1
当我进一步测试显示当我注释掉被点击的元素的onBlur事件(显示菜单的元素)时,我正要转储浏览器输出,javascript按预期工作。
当焦点远离元素时,onBlur事件中的代码会隐藏弹出菜单。第二次单击菜单项本身会触发onBlur事件,该事件会隐藏菜单。似乎由于菜单被隐藏,与之关联的javascript不会被调用。
答案 0 :(得分:1)
浏览器中的输出结果如何?
使用viewsource或firebug或IE调试器来查看。
使用onclick可以更好地处理这个问题:
onclick='alert("test");return false;'
答案 1 :(得分:0)
我认为你应该尝试JQuery
<script language="javascript" type="text/javascript">
$(function () {
$(".Menu a").each(function (index) {
$(this).click(function () {
alert(index);
return false;
});
});
});
</script>