无法设置javascript生成元素的“未定义”属性'innerHTML'

无法设置javascript生成元素的“未定义”属性'innerHTML',javascript,html,Javascript,Html,在我的html表单中,当用户留下空白字段时,我希望在字段下方打印一条消息。起初,我尝试在html中使用空的跨距来包含可能的错误消息,结果成功了。但现在,我想通过javascript生成这些空跨度。当我尝试在空范围内打印innerHTML时,控制台显示我无法设置未定义的属性“innerHTML”,但变量statusMessageHTML在两个循环之外定义,因此我不理解为什么会出现此错误 JS var myForm=document.getElementsByTagName'form'[0]; va

在我的html表单中,当用户留下空白字段时,我希望在字段下方打印一条消息。起初,我尝试在html中使用空的跨距来包含可能的错误消息,结果成功了。但现在,我想通过javascript生成这些空跨度。当我尝试在空范围内打印innerHTML时,控制台显示我无法设置未定义的属性“innerHTML”,但变量statusMessageHTML在两个循环之外定义,因此我不理解为什么会出现此错误

JS

var myForm=document.getElementsByTagName'form'[0]; var formFields=document.getElementsByTagName'label'; myForm.addEventListener'submit'函数{ 违约事件; var-statusMessageHTML; //创建空跨距 fori=0;i 男性的 女的 提交
PD:我想用纯javascript来解决这个问题。

statusMessageHTML在第一个for循环中被视为元素对象,但在第二个循环中,您将其假定为数组

    // create empty spans
for(i = 0; i < formFields.length; i++){
  statusMessageHTML = document.createElement('span');
  statusMessageHTML.className = 'status-field-message';
  formFields[i].appendChild(statusMessageHTML);  
  statusMessageHTML.innerHTML = "Error Message"
}

statusMessageHTML对象上不存在属性[i]。这就是未定义消息的原因。如果statusMessageHTML[i]未定义,则无法设置不存在的内容的innerHTML属性

var myForm=document.getElementsByTagName'form'[0]; var formFields=document.getElementsByTagName'label'; myForm.addEventListener'submit'函数{ 违约事件; var-statusMessageHTML; var elementArray=[]; //创建空跨距 fori=0;istatusMessageHTML不是数组-为什么不在创建statusMessageHTML的同一循环中设置innerHTML?或formFields[i].lastElementChild.innerHTML=。。。第二loop@JaromandaX谢谢我忘了那个细节。