javascript innerHTML累加值问题~~求解

我想实现innerHTML的累加,做了个框架,是将所有获取的元素存到数组里的,然后在使用innerHTML+=""便会出现问题:问题如下: 它们用的是统一的HT... 我想实现innerHTML的累加,做了个框架,是将所有获取的元素存到数组里的,然后在使用innerHTML += ""便会出现问题:问题如下: 它们用的是统一的HTML代码<div class="div">         <div>AAA</div>         <div>BBB</div>        <div>CCC</div>    <div>DDD</div></div> /*********************************一、传统方法,可以通过**********************************/var dom = document.getElementsByTagName("div");    for(var i =0;i<dom.length;i++){       dom[i].innerHTML += "append";    }/*********************************二、数组方法,只能累加第一个**********************************/    var temp = [];    var dom = document.getElementsByTagName("div");    for(var i =0;i<dom.length;i++){  //先把每个元素存到数组里       temp.push(dom[i]);    }    for(var j =0;j<dom.length;j++){  //然后从数组里调用       temp[j].innerHTML += "append";    }  //请分开测试,我求方法二的数组方式,应该如何实现方法一的功能? 展开
 我来答
apolloge
2012-02-27 · TA获得超过653个赞
知道小有建树答主
回答量:559
采纳率:0%
帮助的人:441万
展开全部
发现问题所在了,因为你的Div写的不对。

你的DIV结构如下:
<div class="div">
<div>AAA</div>
<div>BBB</div>
<div>CCC</div>
<div>DDD</div>
</div>

通过document.getElementsByTagName("div")取到的对象有5个,而不是你期待的4个
temp[0] 其实等于 在外层的那个Div,因此上 temp[0].innerHTML += "append"; 已经把
整个第一层Div内部的元素全部改变了,成为以下:

<div class="div">
<div>AAA</div>
<div>BBB</div>
<div>CCC</div>
<div>DDD</div>
append
</div>

再往下的循环 temp[1] - temp[4] 实际上在页面上已经不存在了(在你保存的数组中存在,但是和页面上的不再是同一个Dom对象了),所以画面的表象就成了上面的样子,好像只累加第一个似的。如果去掉外面的那个Div,有以下的结果:

<div>AAAappend</div>
<div>BBBappend</div>
<div>CCCappend</div>
<div>DDDappend</div>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式