call javascript function on hyperlink click

前端 未结 9 1934
陌清茗
陌清茗 2020-11-30 21:13

I am dynamically creating a hyperlink in the c# code behind file of ASP.NET. I need to call a JavaScript function on client click. how do i accomplish this?

相关标签:
9条回答
  • 2020-11-30 21:49

    If you do not wait for the page to be loaded you will not be able to select the element by id. This solution should work for anyone having trouble getting the code to execute

    <script type="text/javascript">
    window.onload = function() {
        document.getElementById("delete").onclick = function() {myFunction()};
    
        function myFunction() {
            //your code goes here
            alert('Alert message here');
        }
    };
    </script>
    
    <a href='#' id='delete'>Delete Document</a>
    
    0 讨论(0)
  • 2020-11-30 21:50

    Neater still, instead of the typical href="#" or href="javascript:void" or href="whatever", I think this makes much more sense:

    var el = document.getElementById('foo');
    el.onclick = showFoo;
    
    
    function showFoo() {
      alert('I am foo!');
      return false;
    }
    
    <a href="no-javascript.html" title="Get some foo!" id="foo">Show me some foo</a>
    

    If Javascript fails, there is some feedback. Furthermore, erratic behavior (page jumping in the case of href="#", visiting the same page in the case of href="") is eliminated.

    0 讨论(0)
  • 2020-11-30 21:53

    Ideally I would avoid generating links in you code behind altogether as your code will need recompiling every time you want to make a change to the 'markup' of each of those links. If you have to do it I would not embed your javascript 'calls' inside your HTML, it's a bad practice altogether, your markup should describe your document not what it does, thats the job of your javascript.

    Use an approach where you have a specific id for each element (or class if its common functionality) and then use Progressive Enhancement to add the event handler(s), something like:

    [c# example only probably not the way you're writing out your js]
    Response.Write("<a href=\"/link/for/javascriptDisabled/Browsers.aspx\" id=\"uxAncMyLink\">My Link</a>");
    
    [Javascript]  
    document.getElementById('uxAncMyLink').onclick = function(e){
    
    // do some stuff here
    
        return false;
        }
    

    That way your code won't break for users with JS disabled and it will have a clear seperation of concerns.

    Hope that is of use.

    0 讨论(0)
提交回复
热议问题