没有jQuery的OnClick

Mik*_*ike 47 javascript onclick

如何在onclick 没有 jQuery的情况下制作,没有HTML中的额外代码,例如:

<a href="#" onclick="tramtramtram">
Run Code Online (Sandbox Code Playgroud)

只是使用外部js文件?

<script type="text/javascript" src="functions.js"></script>
Run Code Online (Sandbox Code Playgroud)

我需要替换这段代码:

$("a.scroll-up, a.scroll-down").click(function(){
    SNavigate($(this).attr("href").substr(7));return false;
});
Run Code Online (Sandbox Code Playgroud)

Raf*_*ael 61

当这个锚点只包含一个函数来处理点击时,你可以写

document.getElementById('anchorID').onclick=function(){/* some code */}
Run Code Online (Sandbox Code Playgroud)

否则,您必须使用DOM方法addEventListener

function clickHandler(){ /* some code */ }
var anchor = document.getElementById('anchorID');
if(anchor.addEventListener) // DOM method
  anchor.addEventListener('click', clickHandler, false);
else if(anchor.attachEvent) // this is for IE, because it doesn't support addEventListener
   anchor.attachEvent('onclick', function(){ return clickHandler.apply(anchor, [window.event]}); // this strange part for making the keyword 'this' indicate the clicked anchor
Run Code Online (Sandbox Code Playgroud)

还记得在加载所有元素时调用上面的代码(例如,在window.onload上)

- 编辑

我看到你添加了一些细节.如果要替换下面的代码

$("a.scroll-up, a.scroll-down").click(function(){SNavigate($(this).attr("href").substr(7));return false;});
Run Code Online (Sandbox Code Playgroud)

如果不使用jQuery,这应该可以胜任

function addEvent(obj, type, fn) {
        if (obj.addEventListener)
                obj.addEventListener(type, fn, false);
        else if (obj.attachEvent)
                obj.attachEvent('on' + type, function() { return fn.apply(obj, [window.event]);});
}
addEvent(window, 'load', function(){
   for(var i=0, a=document.anchors, l=a.length; i<l;++i){
      if(a[i].className == 'scroll-up' || a[i].className == 'scroll-down'){
         addEvent(a[i], 'click', function(e){ SNavigate(this.href.substr(7)); e.returnValue=false; if(e.preventDefault)e.preventDefault();return false});
      }
   }
});
Run Code Online (Sandbox Code Playgroud)


Can*_*var 13

这个怎么样 :

document.getElementById("lady").onclick = function () {alert('onclick');};
Run Code Online (Sandbox Code Playgroud)


Cor*_*rch 5

W3C建议:

element.addEventListener('click',doSomething,false)
Run Code Online (Sandbox Code Playgroud)

微软使用:

element.attachEvent('onclick',doSomething)
Run Code Online (Sandbox Code Playgroud)

您可以执行一些功能检测并确定要使用的呼叫.

来自http://www.quirksmode.org/js/events_advanced.html.