首页 > 变量未定义?明明定义了啊?大家帮帮看一下奇怪的现象!

变量未定义?明明定义了啊?大家帮帮看一下奇怪的现象!

下面是一个自定义函数

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进行赋值了。


那两句要用大括号包起来

还有,你的排版!!(╯‵□′)╯︵┴─┴

【热门文章】
【热门文章】