在JS中使用appendChild多次使用相同的节点

时间:2010-11-19 04:52:24

标签: javascript appendchild

我正在为具有多个评级的表单编写表单验证脚本,我想插入一些文字说“给出评分!”对于用户未命中的每个评级。我编写了下面的代码来执行此操作,但我遇到的问题是,give_rating节点仅附加到表单上的最后一个节点。我知道这是因为appendChild基本上移动了一个节点而不是复制它,我尝试使用cloneNode来解决这个问题,但这完全打破了我的JS。

无论如何,这是代码。我做错了什么?

感谢您的帮助,

克里斯

var give_rating = document.createElement('span');
give_rating.className='small red';
give_rating.innerHTML = '<strong> &nbsp;Give a rating!</strong>';

document.getElementById('rating1').appendChild(give_rating);
document.getElementById('rating2').appendChild(give_rating);

当我使用上面代码时,give_rating仅附加到'rating2'。

document.getElementById('rating1').appendChild(give_rating.cloneNode(True));
document.getElementById('rating2').appendChild(give_rating.cloneNode(True));

当我使用此代码时,整个脚本都会失败。如何添加“给予评级!”的实例对于我的表单上的每个评级,用户都没有填写?

2 个答案:

答案 0 :(得分:5)

JavaScript区分大小写:True应为true(小写)。

答案 1 :(得分:1)

  1. 您只能插入一次创建的html元素或文档片段。所以,你必须调用cloneNode()函数。
  2. javascript区分大小写。因此,它应该是cloneNode(true),而不是cloneNode(True)
  3. 您可以按F12打开浏览器的javascript调试程序(Chrome和IE / Edge)。然后你可以看到你的脚本会发生什么。