Javascript-函数赢得';不要在每篇文章后面加一段
我想使用Javascript中的函数add在article类型的每个元素后面添加一个段落,但它不起作用。以下是我编写的代码: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
<!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
- 实际上,您是在文章中插入段落。为了正确地附加元素,有一个清晰的说明,说明了如何在不使用其他库的情况下执行此操作
<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
元素。在您的案例中,它出现在最后一个附加位置。非常感谢您的解释!