无法读取属性“addEventListener”的值

时间:2015-07-15 06:23:24

标签: javascript jquery html

我有一个登录页面。成功登录用户后重定向到作为ASCX页面的主页面。我在其中使用了div元素。

<div title="Main" id="main">
    <a href="/Home.aspx" id="home">
        <div class="link-title">
            Home
        </div>
    </a>
</div>
<div title="Contact" >
    <a href="/Contact.aspx" id="contact>
        <div class="link-title">
            Contact
        </div>
    </a>
</div>

我希望在 TAB 键期间按下特定锚标签上的焦点,然后按 ENTER 按键,它会重定向到特定的链接页面。

Anchor标签工作正常。但我想要的是,当它打开特定的链接页面并重新加载页面时,焦点应保留在该特定链接上。

这样,在下一个 TAB 键上,按导航/焦点移动到下一个锚标记。我使用了以下JS代码,但在页面加载时它显示运行时错误:

  

无法获取属性“addEventListener”的值:object为null或undefined

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

    el.addEventListener("keydown", storeLinkId, false);

    //function stores ID attribute of target link
    //into session storage if enter is pressed     
    function storeLinkId(e) {
        if (!e) e = window.event;
        var keyCode = e.keyCode || e.which;

        if (keyCode == '13') {
            console.log("storing " + e.target.id);
            sessionStorage.setItem('tabbed-link', e.target.id);
        }
    }

    //if there is a linkid in session storage
    if (sessionStorage.getItem('tabbed-link')) {
        //get the id from session storage
        var linkId = sessionStorage.getItem('tabbed-link');
        //focus on the link with the matching id attribute
        document.getElementById(linkId).focus();
        //delete the linkid from session storage
        sessionStorage.removeItem('tabbed-link');
    }

在添加事件侦听器之前,我还尝试使用此代码检查el是否为null,但没有得到解决方案:

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

if(el) {
    el.addEventListener("keydown", storeLinkId, false);
}

处理此错误的确切代码应该是什么?

0 个答案:

没有答案