【问题标题】:Exception Unable to set property 'href' of undefined or null reference when异常时无法设置未定义或空引用的属性“href”
【发布时间】:2013-05-28 08:23:38
【问题描述】:

问题是这样的:我尝试在函数CheckCookie 中动态更改链接的innerHTML 和href,该函数在body - onload 中执行。这是函数:

function checkCookie()
{
    var username = getCookie("username");

    if (username != null && username != "")
    {       
        document.getElementById("firstlink").href = "http://localhost:8080/newLogIN/probalassfinalwithoutstyle.html";
        document.getElementById("firstlink").innerHTML = "Go to my lesson";       
    }
}

我还有另一个 jquery 函数,它在文档就绪时执行

function DropDown(el) {
    this.dd = el;
    this.initEvents();
}
DropDown.prototype = {
    initEvents: function() {
        var obj = this;

        obj.dd.on('click', function(event) {
            $(this).toggleClass('active');
            event.stopPropagation();
        });
    }
}


$(function() {

    var dd = new DropDown($('#dd'));

    $(document).click(function() {
        // all dropdowns
        $('.wrapper-dropdown-3').removeClass('active');
    });

});

我的身体里有这个

<body onload="CheckCookie()">
    <div id="dd" class="wrapper-dropdown-3">LoGG
        <ul class="dropdown">
            <li><a href="#" id="firstlink">Gismo Account</a> </li>

    </div>
</body>

一切都按我的意愿工作,但是当我添加时

document.getElementById("dd").innerHTML = "Hi," + getCookie("username");  

要更改 dd div 的 InnerHtML,它给了我一个例外

SCRIPT5007:无法设置未定义或空引用的属性“href”

【问题讨论】:

  • 你什么时候执行那个代码?
  • 为什么要混合不同风格的事件处理(body onload vs. jQuery ready)?这很容易导致问题 - 以同样的方式触发您的第一个脚本。
  • 由于您替换了 dd 的内容,因此您不再拥有“firstlink” - 这是导致错误的原因

标签: javascript jquery


【解决方案1】:

当您运行document.getElementById("dd").innerHTML = "Hi," + getCookie("username"); 时,您将完全替换dd 元素的内容。这包括firstlink 锚。因此,当您更改该链接时,没有具有该 ID 的元素,因此它会因该错误而失败。

【讨论】:

    猜你喜欢
    • 2015-03-30
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多