提问者:小点点

动态地将新的HTML注入到web页面中,并且能够访问“新”注入的HTML中的任何新的DOM元素


我找到了这个链接,它建议将一个表注入到一个div中。

在此处输入链接说明

下面是我想要注入的新HTML的一个示例:

<br />
<br />


<LSz class='LineSpaceDouble'>
Hi, <p class='FIRST_NAME'> </p> <br><br>
Hi <p class='FIRST_NAME'> </p>, my name is <p class='MYNAME'> </p> .
More Text.<br>
</LSz>

<br />


     <label for='PBirthDate'>Primary Birthdate:</label>
     <input id='PBirthDate' class='input100' type='text' name='PBirthDate' placeholder='mm/dd/yr' size='10'>
     <span class='focus-input100'></span>
<br />

下面是我当前执行注入的jq代码:

var S = J;

$(S).appendTo('#Script_Displayed');

J保存要注入的HTML文本。

Script_Displayed是div的id

这是可行的--因为“文本”确实被注入到div所在的web页面中。

我的问题是当我试图更改一个值时:

var Z = document.getElementsByClassName('FIRST_NAME');

Z.innerHTML  = "Anthony";

新的innerHTML值不会出现在网页上。

我可以做什么使这些更改可见?


共1个答案

匿名用户

函数GetElementsByClassName返回元素集合,而不是单个元素。 所以这在默认情况下是不起作用的:

Z.innerHTML  = "Anthony";

相反,在集合上循环,将innerHTML值分配给集合中的每个元素:

null

var Z = document.getElementsByClassName('FIRST_NAME');
for (let el of Z) {
  el.innerHTML  = "Anthony";
}
Hi, <p class='FIRST_NAME'> </p> <br><br>
Hi <p class='FIRST_NAME'> </p>, my name is <p class='MYNAME'> </p> .
More Text.<br>