2014-04-11 44 views
0

我已经在SO和整个web上看到了许多其他帖子,但是那些处理尝试在元素创建之前添加事件处理程序。我的情况不同。通过调用一些事件处理程序的document.getElementById在其他人工作正常时返回null

<nav id="main_menu">     
      <ul>     
       <li id="liMapFilter" class="list"><img id="imgFilter" src="images/filter_icon.png">Filter</li> 
       <li id="liDiagnostics" class="list"><img id="imgTools" src="images/tools_icon.png">Administration</li>    
      </ul>   
     </nav> 

我设置页面加载后:

我有了以下一段HTML文档

$(document).ready(function() { 
    home.init(); 
}); 
home.init()功能我设置内

以下听众:

var elmMapFilter = document.getElementById('liMapFilter"'); 
cs_core.addEvent(elmMapFilter, 'click', home.showDialogMapFilter, false); 

所有其他侦听器处理程序只是连接f ine,但是这个特定的东西总是抛出一个空引用。我无法理解这个处理器何时工作正常:

var elmDiagnostics = document.getElementById('liDiagnostics'); 
cs_core.addEvent(elmDiagnostics, 'click', core.showDiagnostics, false); 

请指教。

+0

所以你使用jQuery,你只是没有使用它的一切。 – adeneo

+1

是的,这是正确的。 –

+0

你的脚本在哪里执行?分享您的HTML请 –

回答

5

你有一个印刷错误。在你的ID中有一个流浪的"字符。

+0

就是这样。谢谢 - 这让我疯狂! –

+1

+1 - 非常好的视线! – adeneo

+0

好的。有时候,需要在javascript中执行空检查和未定义检查以确保执行流程的不间断 –

相关问题