代码之家  ›  专栏  ›  技术社区  ›  Mike

OnClick不带jQuery

  •  52
  • Mike  · 技术社区  · 17 年前

    onclick

    <a href="#" onclick="tramtramtram">
    

    <script type="text/javascript" src="functions.js"></script>
    

    $("a.scroll-up, a.scroll-down").click(function(){
        SNavigate($(this).attr("href").substr(7));return false;
    });
    
    9 回复  |  直到 7 年前
        1
  •  56
  •   Rafael    17 年前

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

    document.getElementById('anchorID').onclick=function(){/* some code */}
    

    否则,您必须使用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
    

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

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

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

    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});
          }
       }
    });
    
        2
  •  12
  •   Canavar    17 年前

    document.getElementById("lady").onclick = function () {alert('onclick');};
    
        3
  •  5
  •   Corbin March    17 年前

    W3C建议:

    element.addEventListener('click',doSomething,false)
    

    微软使用:

    element.attachEvent('onclick',doSomething)
    

    您可以进行一些特征检测,并确定使用哪个调用。

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

        4
  •  2
  •   RichieHindle    17 年前

    在html中没有额外代码的情况下,有一种方法:

    <html><body><head><script>  // This script could be in an external JS file
    function my_handler(elt) {
        alert("Yay!");
        return false;
    }
    
    function setup() {
        document.getElementById('lady').onclick = my_handler;
    }
    
    window.onload = setup;
    </script></head>
    <body><a href='#' id='lady'>Test</a></body>
    </html>
    
        5
  •  1
  •   bchhun    17 年前
    <script>
     function tramtramtram(){
         alert("tram it!");
     }
    </script>
    
    
    <a href="#" onclick="tramtramtram()">tramtram</a>
    
        6
  •  1
  •   ka3751    17 年前

    var el=document.getElementById('lady');

        7
  •  1
  •   buti-oxa    17 年前

    加载文档时执行此脚本(用您的内容替换alert):

    var rgLinks = document.getElementsByTagName("A");
    
    for (var x=0; x<rgLinks.length; x++) {
        el = rgLinks[x];
    
        if (el.className == 'scroll-down' || el.className == 'scroll-down')
            {
            el.onclick = function () {alert('onclick');};
            }
        }
    

    也许这就是你要问的。..

        8
  •  0
  •   null    17 年前

    只需使用 onclick 属性。

    <a href="#" onclick="functionName(someParam)">
    

    或者用javascript来实现,

    document.getElementById("anchorID").onclick = function(){
       some code
    };
    
        9
  •  0
  •   kgiannakakis    17 年前

    您需要使用getElementById来添加onclick处理程序。但是,你需要在某个地方启动你的代码。没有jQuery,你只能使用body onload处理程序:

    <body onload="myinitfunction()">