2010-07-28 86 views
9

我想调用一个JavaScript函数onclick。我写了这样的事情我可以使用document.getElementById(someid).onclick标记

<script type="text/javascript"> 
    function readPage(){ 
     alert("Hello"); 
    } 

    document.getElementById('read').onclick=readPage; 
</script> 

<a id="read" href="">read</a> 

我想打电话给readPage功能,但它不工作?如果我写它的工作原理的onclick里面的标签,但我上面写的方式是行不通的。为什么?

回答

13

没有什么错,你怎么做到的,但是当。在加载之前,您无法访问DOM (like running getElementById())。最容易做的事情是运行里面window.onload这样你的代码:

window.onload = function() { 
    document.getElementById("read").onclick=readPage; 
}; 
+0

在当前页面中包含该文件感谢Bjarne Mogstad工作:) – Vipul 2010-07-28 10:56:01

0

您必须先禁用锚的默认方向的协议(即,不会让去到HREF)

  1. 锚让href="#"
  2. 检查event.preventDefault()功能示例here
0

你应该有:

<script type="text/javascript"> 
    function readPage(){ 
     alert("Hello"); 
    } 

    document.getElementById('read').onclick=readPage; 
</script> 

<a id="read" href="#">read</a> 
+0

不行,我在其他一些.js文件中写了javascript函数。 – Vipul 2010-07-28 10:49:48

+0

@Vipul:确保你使用''标签 – Sarfraz 2010-07-28 10:51:49

2

它将与空href属性(然后将被用于网页的当前URL), 工作,但你必须使用,如已经提到的那样,window.onload要附加点击处理程序,或者您必须在之后移动scripta元素。

否则getElementById找不到该元素,因为它尚不存在于DOM树中。

<a id="read" href="">read</a> 

<script type="text/javascript"> 
    function readPage(){ 
     alert("Hello"); 
     return false; 
    } 

    document.getElementById('read').onclick=readPage; 
</script> 

如上所述,您可以使用例如return false;使浏览器不是跟随URL。如果将URL更改为href="#",则甚至需要此操作,否则浏览器会将页面滚动到顶部。

测试它自己:http://jsfiddle.net/Nj4Dh/1/


了解更多关于traditional event registration model

0

有两种方法可以做到这一点(没有任何浏览器特定的功能)。一个是

<script type="text/javascript"> 

    function stopDefault(e) //cross browser function for stopping default actionw 
    { 
     if (e && e.preventDefault) 
     { 
      e.preventDefault(); 
     } 
     else 
     { 
      window.event.returnValue = true; 
     } 
     return false; 
    } 

    function readPage(event){ 
     alert("Hello"); 

     return stopDefault(event);//prevent default action 
    } 



    window.onload = function(event){ 

     document.getElementById('read').onclick=readPage; 


    } 
</script> 

<a id="read" href="#">read</a> 

或者:

<script type="text/javascript"> 
    function stopDefault(e) 
    { 
     if (e && e.preventDefault) 
     { 
      e.preventDefault(); 
     } 
     else 
     { 
      window.event.returnValue = true; 
     } 
     return false; 
    } 

    function readPage(event){ 
     alert("Hello"); 

     return stopDefault(event);//prevent default action 
    } 

</script> 
<a id="read" href="#" onclick="readPage(event)">read</a> 

我用stopDefault功能SD您需要停止链接的默认操作,否则会尝试去到url多数民众赞成在href 。

+0

@Felix Kling糟糕我把那个位粘贴到错误的地方,谢谢。更新。 – 2010-07-28 10:55:34

+0

噢好:)删除我的评论;) – 2010-07-28 10:56:23

相关问题