首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不创建新节点的JS中的appendChild

不创建新节点的JS中的appendChild
EN

Stack Overflow用户
提问于 2018-01-04 04:27:36
回答 2查看 66关注 0票数 0

下面是我的代码片段。我想根据我的条件添加新的列表项。除了脚本没有创建新的项目点和将所有文本添加到同一个项目点之外,一切都进行得很顺利。

代码语言:javascript
复制
if(revenue2015 > revenue2016 && revenue2015!=0 && revenue2016!=0){
     per=(revenue2016-revenue2015)/revenue2015;
     revenuePoint.appendChild(document.createElement('li').appendChild(document.createTextNode("Revenue decreased by ("+(per*100)+"%) on YoY basis from 2015 to 2016.")));
}
else if(revenue2015 < revenue2016 && revenue2015!=0 && revenue2016!=0){
     per=(revenue2016-revenue2015)/revenue2015;
     revenuePoint.appendChild(document.createElement('li').appendChild(document.createTextNode("Revenue increased by "+(per*100)+"% on YoY basis from 2015 to 2016.")));
}
else if(revenue2015 == 0 || revenue2016 == 0)
{
    if(revenue2015 ==0 && revenue2016 == 0){
        revenuePoint.appendChild(document.createElement('li').appendChild(document.createTextNode("Revenue data for the both 2015 & 2016 are missing.")));
    }
    else if(revenue2015 ==0 && revenue2016 != 0){
        revenuePoint.appendChild(document.createElement('li').appendChild(document.createTextNode("Revenue data for 2015 is missing.")));
    }
    else if(revenue2016 ==0 && revenue2015 != 0){
        revenuePoint.appendChild(document.createElement('li').appendChild(document.createTextNode("Revenue data for 2016 is missing.")));
    }
}


if(revenue2016 > revenue2017 && revenue2016!=0 && revenue2017!=0){
     per=(revenue2017-revenue2016)/revenue2016;
     revenuePoint.appendChild(document.createElement('li').appendChild(document.createTextNode("Revenue decreased by ("+(per*100)+"%) on YoY basis from 2016 to 2017.")));
}
else if(revenue2016 < revenue2017 && revenue2016!=0 && revenue2017!=0){
     per=(revenue2017-revenue2016)/revenue2016;
     revenuePoint.appendChild(document.createElement('li').appendChild(document.createTextNode("Revenue increased by "+(per*100)+"% on YoY basis from 2016 to 2017.")));
}
else if(revenue2017 == 0)
{
        revenuePoint.appendChild(document.createElement('li').appendChild(document.createTextNode("Revenue data for 2017 is missing!!!")));
}

输出是

2015年和2016年的收入数据都是missing.Revenue的2017年数据丢失了!

然而,它应该在两个单独的项目点,而不是同一条线。有什么解决办法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-04 04:39:39

appendChild返回的值是追加的节点,因此当您这样做时:

代码语言:javascript
复制
     revenuePoint.appendChild(document.createElement('li').appendChild(document.createTextNode("Revenue decreased by ("+(per*100)+"%) on YoY basis from 2015 to 2016.")));

附加到revenuePoint的节点是最后的文本节点,而不是LI。因此,您得到的只是所有文本节点的连接。您必须将其分解为单独的语句,例如:

代码语言:javascript
复制
var li = revenuePoint.appendChild(document.createElement('li')); // returns the LI
li.appendChild(document.createTextNode("Revenue decreased by (" +
               (per * 100) + "%) on YoY basis from 2015 to 2016.")); // returns the text node

虽然您可能希望创建一个只传递根节点和文本的函数,但是它会生成LI并追加文本。

PS。在原始代码中,当文本节点附加到revenuePoint时,它将与最初附加到的LI分离。LI没有引用它,因此可以用于垃圾收集。

票数 0
EN

Stack Overflow用户

发布于 2018-01-04 05:06:08

请注意,下面一行将不能工作:revenuePoint.appendChild(document.createElement('li').appendChild(document.createTextNode("Revenue data for 2017 is missing!!!")))

你必须像下面这样分开:

代码语言:javascript
复制
var li = document.createElement('li');
var textNode = document.createTextNode("Revenue data for 2017 is missing!!!")
li.appendChild(textNode);
revenuePoint.appendChild(li);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48088677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档