我试图用JavaScript动态加载菜单,然后将onclick事件侦听器设置为菜单的元素,在它们加载后。我似乎不知道该怎么做。我通过AJAX调用加载菜单,菜单内容加载良好,但是当我点击菜单元素时,什么也没有发生,就像我期望的那样。
这是我的代码的一部分,我希望是原因…
//Load Menu and main images
window.onload = function()
{
load_menu();
}
document.getElementById('menu').onload = function()
{
document.getElementById('projects-button').onclick = load_projects_view();
}
//Load menu function
function load_menu()
{
request = getHTTPObject();
request.onreadystatechange = append_menu;
request.open("GET", "./php/menu.php", true);
request.send(null);
}
//Load Project View
function load_projects_view()
{
request = getHTTPObject();
request.onreadystatechange = append_project_view;
request.open("GET", "./php/project_view.php", true);
request.send(null);
}
删掉这个
document.getElementById('menu').onload = function()
{
document.getElementById('projects-button').onclick = load_projects_view();
}
把这个放在append_menu()
的底部。
document.getElementById('projects-button').onclick = load_projects_view;
当javascript行
document.getElementById('menu').onload = ...
执行。这一行在
之前执行。window.onload
。
我可能会调用代码:
document.getElementById('projects-button').onclick = load_projects_view();
此刻菜单项被添加(你的append_menu函数?)
但是很难说,因为它只是一段代码。
jQuery和dojo也绝对是可行的方法,而且我认为jQuery是获得语言基础的一个很好的起点,因为它隐藏了所有奇怪的浏览器行为。