Jan*_*Jan 24 javascript addeventlistener
我正在尝试做一些相当简单的事情,但由于我的原因可能不足以搜索文档,我无法让它工作.
我有一个功能强大的内联JS,看起来像这样:
<A title="Wolfram IP Calc" href="javascript:txt=prompt('Enter%20IP%20address,%20e.g.%2010.20.30.40/29','1.2.3.4/5');%20if(txt)%20window.open('http://www.wolframalpha.com/input/?i='+txt);void(O);">Compute!</A>
Run Code Online (Sandbox Code Playgroud)
出于各种原因,我正试图分离JS,这就是我遇到麻烦的地方.
我创建了以下测试页面,它给出了错误Uncaught TypeError: Cannot call method 'addEventListener' of null:
<HTML> <HEAD profile="http://www.w3.org/2005/10/profile"> <script type="text/javascript">
var compute = document.getElementById('compute');
compute.addEventListener('click', computeThatThing, false);
function computeThatThing() {
txt=prompt('Enter%20IP%20address,%20e.g.%2010.20.30.40/29','1.2.3.4/5');
if(txt) {
window.open('http://www.wolframalpha.com/input/?i='+txt);
}
}
</script></HEAD>
<BODY>
<A title="Wolfram IP Calc" id="compute" href="javascript:void(O);">Test</A>
</BODY>
</HTML>
Run Code Online (Sandbox Code Playgroud)
我能找到的唯一一个指向这样的问题的是它addEventListener无法使用<A>但应该处理<IMG>(这对我来说很合适,因为我要将它倒在一些图像上),所以我尝试添加以下无济于事:
<img id="compute" src="http://products.wolframalpha.com/images/products/products-wa.png" />
Run Code Online (Sandbox Code Playgroud)
提前谢谢你指出我做错了什么.这可能是显而易见的,但我对JS的经验几近为零,而且到目前为止,我已经大部分都是通过货物结果.
gdo*_*ica 54
您的代码在<head>=>运行之前运行元素,因此document.getElementById('compute');返回null,作为MDN承诺...
element = document.getElementById(id);
element是对Element对象的引用,如果具有指定ID的元素不在文档中,则为null.
解决方案:
什么是jQuery ready事件,为什么需要它?
(为什么不只是JavaScript的加载事件):
虽然JavaScript提供了在呈现页面时执行代码的加载事件,但在完全接收到所有资产(如图像)之前,不会触发此事件.在大多数情况下,只要完全构造DOM层次结构,就可以运行脚本.传递给.ready()的处理程序保证在DOM准备好后执行,所以这通常是附加所有其他事件处理程序的最佳位置
......
ready 文档
| 归档时间: |
|
| 查看次数: |
124602 次 |
| 最近记录: |