属性“gatherItemInfo”的值为null或undefined,而不是Function对象

时间:2014-01-20 05:32:21

标签: javascript

我一直在研究这个错误大约一个小时而没有任何进展。我有一个JavaScript函数,用于构建包含 onclick 事件的 span 元素。但是,当我单击IE11中的跨度以尝试触发该功能时,我会收到上面显示的错误消息。我怀疑这可能是一个范围问题,但可能是错误的。

以下是有问题的简明部分:

function getListItemsGeneric(branchId, listDispName) {
    $().SPServices({
        operation: "GetListItems",
        async: false,
        listName: listDispName,
        CAMLViewFields: "[FieldNames]",
        completefunc: function (xData, Status) {
            $(xData.responseXML).SPFilterNode("z:row").each(function() {
                [. . . other HTML-building code. . .]
                htmlBuilder += "<div class='editIcon'><span class='ui-icon ui-icon-pencil' onclick=\"gatherItemInfo(" + progId + ", '" + listDispName + "')\"></span></div>";
            });
        }
    });
}

function gatherItemInfo(prog, list) {
    alert("!");
}

在构建 span 时,我使用 onclick 事件来调用 gatherItemInfo 并提供两个变量。单击跨度应该会显示警报,但我会在此帖子的标题中显示该消息。 getListItemsGeneric gatherItemInfo 在同一个JavaScript文件中处于同一级别;以我的思维方式调用应该能够看到 gatherItemInfo ,但现在似乎并非如此。

对于它的价值,当我在DOM Explorer中查看它时, span 似乎是格式良好的。我错过了什么?

1 个答案:

答案 0 :(得分:0)

元素的onclick值不知道创建元素的上下文。它正在寻找全局上下文中的函数gatherItemInfo。听起来你在其他地方定义了它。您可以以编程方式分配单击处理程序,也可以将函数设置为全局。