为了账号安全,请及时绑定邮箱和手机立即绑定

为什么多次使用insertbefore最后只加了一个

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>无标题文档</title>

</head>

<body>

<ul id="test"><li>JavaScript</li><li>HTML</li></ul> 

 <script type="text/javascript">

 o = document.getElementById("test");  

  var ll=document.createElement('li');

  ll.innerHTML='php';

    for(var i=0;i<3;i++){o.insertBefore(ll,o.firstChild)};

</script> 

</body>

</html>


正在回答

2 回答

因为你只是新建了一个element,并且你输出的不是o,而是每次输出一个insertBefore操作,试试把代码换成以下形式,就可以实现你想要的效果。

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>无标题文档</title>

</head>

<body>

<ul id="test"><li>JavaScript</li><li>HTML</li></ul> 

 <script type="text/javascript">

  o = document.getElementById("test");  

    for(var i=0;i<3;i++){

        var ll=document.createElement('li');

        ll.innerHTML='php';

        o.insertBefore(ll,o.firstChild);    

    }

</script> 

</body>

</html>


0 回复 有任何疑惑可以回复我~

因为每次for循环的时候o节点,也就是整个ul是变化的,每次o.firstChild都在变化,不是因为insertBefore是插在某节点的前面,只要每次插在第一个的前面就OK啦。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么多次使用insertbefore最后只加了一个

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信