Javascript 无法在jsni中读取null的属性removeChild
我正在从事gwt的工作。我写了一段代码来显示一个弹出窗口,这个弹出窗口发生得非常好,它会在5秒后自动运行,如果有人点击弹出窗口,它会一直保持到用户点击弹出窗口之外(点击html主体) 整个功能正常工作,但在消失后会出现错误 错误是 未捕获类型错误:无法读取null的属性“removeChild”Javascript 无法在jsni中读取null的属性removeChild,javascript,gwt,removechild,jsni,Javascript,Gwt,Removechild,Jsni,我正在从事gwt的工作。我写了一段代码来显示一个弹出窗口,这个弹出窗口发生得非常好,它会在5秒后自动运行,如果有人点击弹出窗口,它会一直保持到用户点击弹出窗口之外(点击html主体) 整个功能正常工作,但在消失后会出现错误 错误是 未捕获类型错误:无法读取null的属性“removeChild” 如果您在弹出窗口外单击两次,则将调用两次hideDelayTimer,第二次sm将没有父节点 您每次检查sm是否为空,但从不将其设置为空;这可能是这里的问题:将其从父节点中删除后将其设置为null(我相
如果您在弹出窗口外单击两次,则将调用两次
hideDelayTimer
,第二次sm
将没有父节点
您每次检查
sm
是否为空,但从不将其设置为空;这可能是这里的问题:将其从父节点中删除后将其设置为null(我相信您可以更好地处理事件)。如果您在弹出窗口外单击两次,则将调用两次HideLayTimer
,第二次sm
将没有父节点
您每次检查sm
是否为空,但从不将其设置为空;这可能是这里的问题:在将其从父节点移除后将其设置为null(我相信您可以在事件处理方面做得更好)
public static void popupError(){
var sr,sm,mb1;
sr=$doc.getElementById('errorpopup');
sr.innerHTML="";
sm=$doc.createElement("div");
sm.className="greyout";
sm.setAttribute("style","margin-bottom: 10px;");
mb1=$doc.createElement("div");
mb1.className="mob-maskbody";
var rightside = $doc.createElement("div");
rightside.className="pad10";
var errortext= $doc.createElement("div");
errortext.className="nh6 center bold";
errortext.innerHTML=error;
rightside.appendChild(errortext);
mb1.appendChild(rightside);
sm.appendChild(mb1);
sr.appendChild(sm);
fadding();
$doc.body.onclick = function()
{
fadding();
}
function fadding()
{
if(sr.childNodes[0]!=null || sm!=null)
{
var hideFadeTimer;
var hideDelayTimer;
hideFadeTimer = setTimeout(function()
{
if(sm!=null){
sm.className="greydout";
}
},2500);
hideDelayTimer = setTimeout(function()
{
if(sm!=null){
sm.parentNode.removeChild(sm);
hideFadeTimer = null;
hideDelayTimer = null;
$doc.body.onclick = null;
}
},5000);
sm.onclick = function(event)
{
event.stopPropagation();
if(hideDelayTimer)
{
clearTimeout(hideDelayTimer);
}
if(hideFadeTimer)
{
clearTimeout(hideFadeTimer);
}
sm.className="greyout";
}
}
}
}