Javascript 由于未捕获类型错误,无法关闭模式:无法设置属性';onclick';空的

Javascript 由于未捕获类型错误,无法关闭模式:无法设置属性';onclick';空的,javascript,jquery,html,Javascript,Jquery,Html,当我运行以下代码时,当我单击下拉菜单的Current Children(当前子项)选项时,相应的模式显示在我的屏幕上,但随后我无法关闭它,因为我在` spanModal.onclick = function() 错误是: userTemplate.js:25 Uncaught TypeError: Cannot set property 'onclick' of null at HTMLAnchorElement.<anonymous> (userTemplate.js:2

当我运行以下代码时,当我单击下拉菜单的Current Children(当前子项)选项时,相应的模式显示在我的屏幕上,但随后我无法关闭它,因为我在`

spanModal.onclick = function()
错误是:

userTemplate.js:25 Uncaught TypeError: Cannot set property 'onclick' of null
    at HTMLAnchorElement.<anonymous> (userTemplate.js:25)
    at HTMLAnchorElement.dispatch (jquery-3.2.1.js:5206)
    at HTMLAnchorElement.elemData.handle (jquery-3.2.1.js:5014)

您的modalName应该是一个字符串,但下面的一行将其作为一个元素:

modalName = document.getElementById(modalName);
这就是为什么span变量不是获取元素的正确字符串。如果找不到,则无法将onclick附加到spanModal元素。尝试命名变量是一件好事,这样您就可以很容易地找到它们的含义。请尝试以下操作:

$(".menu").on("click", function()
{
    var modalFireButton;
    var modalName;
    var modalElm;
    var spanModal;
    var spanName;

    modalFireButton = $(this).attr('id');

    //set variable for corresponding modal 
    modalName = (modalFireButton + "Modal");
    spanName = (modalName + "Span");

    modalElm = document.getElementById(modalName);

    spanModal = document.getElementById(spanName)


    modalElm.style.display='block';

    spanModal.onclick = function()
    {
        modalElm.style.display = "none";
    }

});

您的modalName应该是一个字符串,但下面的一行将其作为一个元素:

modalName = document.getElementById(modalName);
这就是为什么span变量不是获取元素的正确字符串。如果找不到,则无法将onclick附加到spanModal元素。尝试命名变量是一件好事,这样您就可以很容易地找到它们的含义。请尝试以下操作:

$(".menu").on("click", function()
{
    var modalFireButton;
    var modalName;
    var modalElm;
    var spanModal;
    var spanName;

    modalFireButton = $(this).attr('id');

    //set variable for corresponding modal 
    modalName = (modalFireButton + "Modal");
    spanName = (modalName + "Span");

    modalElm = document.getElementById(modalName);

    spanModal = document.getElementById(spanName)


    modalElm.style.display='block';

    spanModal.onclick = function()
    {
        modalElm.style.display = "none";
    }

});

这部分代码是错误的:

modalName = document.getElementById(modalName);
span = (modalName + "Span");

spanModal = document.getElementById(span)

当您试图将HTMLElement与字符串连接时。

这部分代码是错误的:

modalName = document.getElementById(modalName);
span = (modalName + "Span");

spanModal = document.getElementById(span)
当您试图将HTMLElement与字符串连接时。

更改

span=(modalName+“span”)

span=(modalName.id+“span”)

modalName指的是
,要获取
currentChildrenModal
,您需要使用
modalName.id
并附加
Span
来获取Span
的句柄

更改

span=(modalName+“span”)

span=(modalName.id+“span”)


modalName指的是
,要获取
currentChildrenModal
,您需要使用
modalName.id
并附加
Span
来获取Span
的句柄

没错。在您的示例中,似乎希望span名称类似于“modal.id+”span,这是正确的。在您的示例中,似乎希望span名称类似于“modal.id+”span