2011-11-28 145 views
0

这是有问题的代码段:Javascript没有响应元素点击?

 ...  
     var btnClick = document.getElementById("button"); 
     btnClick .addEventListener("click", func, false); 
    } 
    function func() 
    { 
     alert("This works"); 
    } 

我没有得到任何警告框。看到任何问题?

+0

你看到在你的JavaScript控制台的任何错误?另外,您确定控制流是否会通过添加事件侦听器的代码? – dyoo

+0

语法是正确的,它是你的HTML的问题,或者你的JavaScript有另一个错误,导致这段代码永远不会运行。 –

回答

1

您正在使用哪种浏览器? IE不支持.addEventListener()直到9版本,所以你需要说的是这样的:

var btnClick = document.getElementById("button"); 

if (btnClick.addEventListener){ 
    btnClick.addEventListener('click', func, false); 
} else if (btnClick.attachEvent){ 
    btnClick.attachEvent('onclick', func); 
} 
// and if you're really keen: 
else { 
    btnClick.onclick = func; 
} 

不要尚未解析又一个元素上使用.getElementById(),即,把上面的代码要么在document.ready或load事件处理程序中,或放在页面源中的元素之后。

+0

使用firefox,但getElementById应该工作,因为这是所有东西都加载到DOM后调用的 – antonpug

+0

在这种情况下,我会希望你的代码工作,除非在上面的行中有错误它。 (虽然你应该做一些事情,就像我上面所说的那样,以便你支持IE。) – nnnnnn

+0

谁在乎IE?哈哈,这是一个单一任务...铬和FFox只需要 – antonpug

0

如果这样做以下所有的,这将工作:

  1. 等待文件加载要安装的事件监听器前。您可以在window.onload处理程序中运行此代码,也可以将JavaScript初始化代码放在主体的末尾。通过查看btnClick是否有效或无效,可以验证这是否正常工作。
  2. 只能在支持addEventListener的较新浏览器中运行此代码(旧版本的IE不支持该代码)。
  3. 确保页面中只有一个元素与id="button"一致。
  4. 确保页面中没有任何JavaScript错误导致您的脚本停止运行。
  5. 删除btnClick之前的空格.addEventListener

你可以看到它在这里工作:http://jsfiddle.net/jfriend00/HQ24Z/,因为你没有初始化它的原因

0

它.... !!!

window.onload = prepareButton; 

function prepareButton() 
{ 
    document.getElementById('button').onclick = function() 
    { 
     alert('you clicked me!'); 
    } 
} 
+0

不能使用onlick ...赋值方向 – antonpug

0

不要使用非常通用的术语,如'按钮',因为它们往往是保留的,如果您完全确定它应该起作用,您最终会抓紧你的头发。使用id属性的描述性值,例如'form_4_button_submit'。

还怎么做跨浏览器事件处理的例子...

if (window.addEventListener) {document.addEventListener('keydown',keyPressed,false);} 
else {document.attachEvent('onkeydown',keyPressed);} 

function keyPressed(evt) 
{ 
var e = evt || event; 
var key = e.which || e.keyCode; 

switch (key) 
{ 
    case 77:// M 
    alert('m key pressed'); 
    break; 

    case 76://L 
    alert('L key pressed'); 
    break; 
} 
}