Javascript 由于未捕获类型错误,无法关闭模式:无法设置属性';onclick';空的
当我运行以下代码时,当我单击下拉菜单的Current Children(当前子项)选项时,相应的模式显示在我的屏幕上,但随后我无法关闭它,因为我在`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
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