我可以使用document.getElementById(someid).onclick标记a

时间:2010-07-28 10:02:49

标签: javascript

我试图调用一个javascript函数onclick。我写过类似的东西

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

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

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

我正在尝试调用readPage函数,但它不起作用?如果我在onclick里面写标签它可以工作,但我上面写的方式不起作用。为什么呢?

5 个答案:

答案 0 :(得分:13)

你是怎么做的,但是什么时候没有错。在加载之前,您无法访问DOM (like running getElementById())。最简单的方法是在window.onload内运行代码,如下所示:

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

答案 1 :(得分:2)

它将使用空的href属性(然后将使用页面的当前URL), 但是,如前所述,您必须使用window.onload来附加点击处理程序,或者必须在script元素之后移动a

否则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更改为href="#",您甚至需要这样做,否则浏览器会将页面滚动到顶部。

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


详细了解traditional event registration model

答案 2 :(得分:0)

您首先必须禁用锚点的默认方向协议(即,不要转到href)

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

答案 3 :(得分:0)

你应该:

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

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

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

答案 4 :(得分: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你需要停止链接的默认动作,否则它会尝试转到href中的url。