下面是一个自定义函数
function insertAfter(elem,oldelem)
{
e2=oldelem.parentElement;
if(oldelem.nextSibling)
e2.appendChild(elem);
else
e1=oldelem.nextSibling;
e2.insertBefore(elem,e1);//错误显示e1未定义??上一行明明定义了啊,还是全局变量??
}
你的逻辑有问题。
你先判断的是oldelem.nextSibling是否存在。
若存在,则直接在e1的父元素中添加elem元素。
若是不存在,注意了:
e1=oldelem.nextSibling //由第一次判断的时候已经表明oldelem.nextSibling根本就不存在,然后你将这个不存在的元素赋值给e1。
所以,在else 后面的语句中e1当然未定义了。
js的变量定义是var e1 = ……
经提醒,发现我没注意你说明了这个是全局变量。
原因楼上已经说得很清楚了,else的内容需要用大括号抱起来,因为你现在的情况下,e2.insertBefore(elem,e1);
无论何时都会被执行,所以当满足oldelem.nextSibling
的时候便没有进行对e1进行赋值了。
那两句要用大括号包起来
还有,你的排版!!(╯‵□′)╯︵┴─┴