Javascript 我可以使用document.getElementById(someid).onclick作为标记a吗

Javascript 我可以使用document.getElementById(someid).onclick作为标记a吗,javascript,Javascript,我试图调用一个javascript函数onclick。我写过这样的东西 <script type="text/javascript"> function readPage(){ alert("Hello"); } document.getElementById('read').onclick=readPage; </script> <a id="read" href="">read</a> 函数re

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

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

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

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

函数readPage(){
警惕(“你好”);
}
document.getElementById('read')。onclick=readPage;

我试图调用readPage函数,但它不起作用?如果我在标记内写onclick,它就起作用,但我上面写的方法不起作用。为什么?

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

  • 在锚上制作
    href=“#”
  • 检查
    事件.preventDefault()
    函数示例
  • 你应该:

    <script type="text/javascript">
        function readPage(){
            alert("Hello");
        }
    
        document.getElementById('read').onclick=readPage;
    </script>
    
    <a id="read" href="#">read</a> 
    
    
    函数readPage(){
    警惕(“你好”);
    }
    document.getElementById('read')。onclick=readPage;
    
    你怎么做没有错,但是什么时候做。在加载DOM之前,无法访问它(如运行getElementById())。最简单的方法是在
    窗口内运行代码。onload
    如下所示:

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

    它将使用空的
    href
    属性(然后将使用页面的当前URL), 但是,如前所述,您必须使用
    window.onload来附加单击处理程序,或者您必须将
    脚本
    移动到
    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>
    
    
    函数readPage(){
    警惕(“你好”);
    返回false;
    }
    document.getElementById('read')。onclick=readPage;
    
    ​ 如前所述,您使用例如
    return false使浏览器不跟随URL。如果您将URL更改为
    href=“#”
    ,甚至需要此选项,因为否则浏览器会将页面滚动到顶部

    自己测试一下:



    阅读有关的更多信息。

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

    
    函数stopDefault(e)//用于停止默认操作的跨浏览器函数w
    {
    如果(e&e.preventDefault)
    {
    e、 预防默认值();
    }
    其他的
    {
    window.event.returnValue=true;
    }
    返回false;
    }
    函数读取页(事件){
    警惕(“你好”);
    返回stopDefault(事件);//防止默认操作
    }
    window.onload=函数(事件){
    document.getElementById('read')。onclick=readPage;
    }
    
    或:

    
    函数stopDefault(e)
    {
    如果(e&e.preventDefault)
    {
    e、 预防默认值();
    }
    其他的
    {
    window.event.returnValue=true;
    }
    返回false;
    }
    函数读取页(事件){
    警惕(“你好”);
    返回stopDefault(事件);//防止默认操作
    }
    

    我已经使用了stopDefault函数,您需要停止链接的默认操作,否则它将尝试转到href中的url。

    不,它不起作用,我在其他一些.js文件中编写了javascript函数。@Vipul:确保使用
    tag@Felix哎呀,我把它贴错地方了,谢谢。更新。哦,好的:)删除了我的评论;)
    <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>