Javascript-函数赢得';不要在每篇文章后面加一段

Javascript-函数赢得';不要在每篇文章后面加一段,javascript,Javascript,我想使用Javascript中的函数add在article类型的每个元素后面添加一个段落,但它不起作用。以下是我编写的代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <article> here is one article </article> <article> here is the

我想使用Javascript中的函数add在article类型的每个元素后面添加一个段落,但它不起作用。以下是我编写的代码:

<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8">
</head>

<body>
<article> here is one article
</article>
<article> here is the second article
</article>

<script type ="text/javascript">
function add(info)
{
    var art = document.getElementsByTagName('article');
    var par = document.createElement('p');
    par.textContent = info;
    var i;
    for(i in art)
    {
        art[i].appendChild(par);

        }
};
add("ex");
</script>

</body> 
</html>

这里有一篇文章
这是第二篇文章
功能添加(信息)
{
var art=document.getElementsByTagName('article');
var PAR =文档.CuraEngEnter(“p”);
文本内容=信息;
var i;
因为(我在艺术方面)
{
第[i]条:儿童(par);
}
};
添加(“ex”);
我得到的结果是: 这里有一篇文章 这是第二篇文章 前


任何帮助都将不胜感激!谢谢

您只能创建一个段落。每次循环一圈,你都会把那一段放在文章的末尾(把它从以前的地方移走)


如果要创建多个段落,则需要在循环中创建段落。

您只创建了一个节点,然后尝试将其“插入”到每个文章中。节点不会自动克隆,因此只会插入到文章列表中的最后一个元素。必须克隆原始节点才能插入,才能执行此操作:

art[i].appendChild(par.cloneNode(true));
cloneNode
中的
true
标志递归克隆节点,如果没有它,您必须手动将文本附加到每个节点副本上)

在您的示例中需要注意以下几点:

  • 您的循环
    for(i in art)
    使用起来并不安全,因为您没有检查引用的元素是否是列表中自己的成员(您不想引用
    art
    的原型成员)。
    相反,您可以简单地将
    用于(var i=0;i
  • 实际上,您是在文章中插入段落。为了正确地附加元素,有一个清晰的说明,说明了如何在不使用其他库的情况下执行此操作

您使用相同的DOM在循环中放置每次。因此,在循环的每个迭代中创建新的DOM。试试下面的方法

<script type ="text/javascript">
function add(info)
{
    var art = document.getElementsByTagName('article');

    var i;
    for(i in art)
    {   
        var par = document.createElement('p');
        par.textContent = info;
        art[i].appendChild(par);

    }
};
add("ex");
</script>

功能添加(信息)
{
var art=document.getElementsByTagName('article');
var i;
因为(我在艺术方面)
{   
var PAR =文档.CuraEngEnter(“p”);
文本内容=信息;
第[i]条:儿童(par);
}
};
添加(“ex”);

它可以工作,但您在每个
之后都添加了相同的已创建元素;它在DOM中逐步移动,直到移动到最终位置(在最后一次
之后);请尝试附加已创建的
的克隆。不能在多个位置附加同一元素。您应该为每篇文章创建不同的
p
元素。在您的案例中,它出现在最后一个附加位置。非常感谢您的解释!