Javascript 当输入位于同样使用JS DOM构造的表中时,无法使用JS DOM设置输入值

Javascript 当输入位于同样使用JS DOM构造的表中时,无法使用JS DOM设置输入值,javascript,class,dom,input,Javascript,Class,Dom,Input,我正在用JSDOM构建一个HTML表。 有些单元格有文本输入,我想在JS的同一块中设置这些文本输入的值。似乎无论我做什么,浏览器都拒绝呈现我设置的值。对于以下代码的某些上下文,这发生在类的方法中。该类的构造函数有一个名为“elem”的对象,我在其中预先定义了所使用的大多数元素。一切渲染都很完美,但输入是100%空的 this.elem.cont = document.createElement('div'); this.elem.hold = document.createElement('di

我正在用JSDOM构建一个HTML表。 有些单元格有文本输入,我想在JS的同一块中设置这些文本输入的值。似乎无论我做什么,浏览器都拒绝呈现我设置的值。对于以下代码的某些上下文,这发生在类的方法中。该类的构造函数有一个名为“elem”的对象,我在其中预先定义了所使用的大多数元素。一切渲染都很完美,但输入是100%空的

this.elem.cont = document.createElement('div'); this.elem.hold = document.createElement('div')
this.elem.cont.id = 'popupcont'; this.elem.hold.id = 'popuphold'
this.elem.umTable = document.createElement('table'); this.elem.umTable.id = 'usermantable'
this.elem.umRow = document.createElement('tr')
this.elem.umCell = document.createElement('td')
this.elem.umCell.innerHTML = 'Username'
this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell = document.createElement('td')
this.elem.umCell.innerHTML = 'Name'
this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell = document.createElement('td')
this.elem.umCell.innerHTML = 'Password'
this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell = document.createElement('td')
this.elem.umCell.innerHTML = 'Confirm password'
this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell = document.createElement('td')
this.elem.umCell.innerHTML = 'Can blog?'
this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell = document.createElement('td')
this.elem.umCell.innerHTML = 'Manage calendar?'
this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell = document.createElement('td')
this.elem.umCell.innerHTML = 'Is admin?'
this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umTable.appendChild(this.elem.umRow)
this.elem.umRow = document.createElement('tr')
this.elem.umCell = document.createElement('td')
this.elem.uaeInput = document.createElement('input'); this.elem.uaeInput.type = 'text'
this.elem.uaeInput.value = edit ? user.uname : ''
this.elem.umCell.appendChild(this.elem.uaeInput); this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell = document.createElement('td')
this.elem.uaeInput = document.createElement('input'); this.elem.uaeInput.type = 'text'
this.elem.uaeInput.value = edit ? user.name : ''
this.elem.umCell.appendChild(this.elem.uaeInput); this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell = document.createElement('td')
this.elem.uaeInput = document.createElement('input'); this.elem.uaeInput.type = 'password'
this.elem.uaeInput.id = 'uaepass1'
this.elem.umCell.appendChild(this.elem.uaeInput); this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell = document.createElement('td')
this.elem.uaeInput = document.createElement('input'); this.elem.uaeInput.type = 'password'
this.elem.uaeInput.id = 'uaepass2'
this.elem.umCell.appendChild(this.elem.uaeInput); this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell = document.createElement('td')
this.elem.uaeInput = document.createElement('input'); this.elem.uaeInput.type = 'checkbox'
this.elem.uaeInput.checked = edit ? user.blogpost : 'false'
this.elem.umCell.appendChild(this.elem.uaeInput); this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell = document.createElement('td')
this.elem.uaeInput = document.createElement('input'); this.elem.uaeInput.type = 'checkbox'
this.elem.uaeInput.checked = edit ? user.calendar : 'false'
this.elem.umCell.appendChild(this.elem.uaeInput); this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell = document.createElement('td')
this.elem.uaeInput = document.createElement('input'); this.elem.uaeInput.type = 'checkbox'
this.elem.uaeInput.checked = edit ? user.admin : 'false'
this.elem.umCell.appendChild(this.elem.uaeInput); this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umTable.appendChild(this.elem.umRow)
this.elem.hold.appendChild(this.elem.umTable)
this.elem.uaeInput = document.createElement('input'); this.elem.uaeInput.type = 'button'
this.elem.uaeInput.value = 'Submit'
this.elem.hold.appendChild(this.elem.uaeInput)
this.elem.hold.innerHTML += '<br />Leave the password fields blank if you do not wish to update the user\'s password.<br />'
this.elem.cont.appendChild(this.elem.hold)
this.elem.cont=document.createElement('div');this.elem.hold=document.createElement('div')
this.elem.cont.id='popupcont';this.elem.hold.id='pop'
this.elem.umTable=document.createElement('table');this.elem.umTable.id='usermantable'
this.elem.umRow=document.createElement('tr')
this.elem.umCell=document.createElement('td')
this.elem.umCell.innerHTML='Username'
this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell=document.createElement('td')
this.elem.umCell.innerHTML='Name'
this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell=document.createElement('td')
this.elem.umCell.innerHTML='Password'
this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell=document.createElement('td')
this.elem.umCell.innerHTML='确认密码'
this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell=document.createElement('td')
this.elem.umCell.innerHTML='Can blog'
this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell=document.createElement('td')
this.elem.umCell.innerHTML='管理日历?'
this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell=document.createElement('td')
this.elem.umCell.innerHTML='是管理员吗?'
this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umTable.appendChild(this.elem.umRow)
this.elem.umRow=document.createElement('tr')
this.elem.umCell=document.createElement('td')
this.elem.uaeInput=document.createElement(“输入”);this.elem.uaeInput.type='text'
this.elem.uaeInput.value=编辑?user.uname:“”
this.elem.umCell.appendChild(this.elem.uaeInput);this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell=document.createElement('td')
this.elem.uaeInput=document.createElement(“输入”);this.elem.uaeInput.type='text'
this.elem.uaeInput.value=编辑?user.name:“”
this.elem.umCell.appendChild(this.elem.uaeInput);this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell=document.createElement('td')
this.elem.uaeInput=document.createElement(“输入”);this.elem.uaeInput.type='password'
this.elem.uaeInput.id='uaepass1'
this.elem.umCell.appendChild(this.elem.uaeInput);this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell=document.createElement('td')
this.elem.uaeInput=document.createElement(“输入”);this.elem.uaeInput.type='password'
this.elem.uaeInput.id='uaepass2'
this.elem.umCell.appendChild(this.elem.uaeInput);this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell=document.createElement('td')
this.elem.uaeInput=document.createElement(“输入”);this.elem.uaeInput.type='checkbox'
this.elem.uaeInput.checked=编辑?user.blogpost:'false'
this.elem.umCell.appendChild(this.elem.uaeInput);this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell=document.createElement('td')
this.elem.uaeInput=document.createElement(“输入”);this.elem.uaeInput.type='checkbox'
this.elem.uaeInput.checked=编辑?user.calendar:'false'
this.elem.umCell.appendChild(this.elem.uaeInput);this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umCell=document.createElement('td')
this.elem.uaeInput=document.createElement(“输入”);this.elem.uaeInput.type='checkbox'
this.elem.uaeInput.checked=编辑?user.admin:'false'
this.elem.umCell.appendChild(this.elem.uaeInput);this.elem.umRow.appendChild(this.elem.umCell)
this.elem.umTable.appendChild(this.elem.umRow)
this.elem.hold.appendChild(this.elem.umTable)
this.elem.uaeInput=document.createElement(“输入”);this.elem.uaeInput.type='button'
this.elem.uaeInput.value='Submit'
this.elem.hold.appendChild(this.elem.uaeInput)
this.elem.hold.innerHTML+='
如果不想更新用户的密码,请将密码字段留空。
this.elem.cont.appendChild(this.elem.hold)

因此,cont被附加到DOM中相应的元素。它呈现得非常完美,但不管我怎么做,文本输入都是空的。在将输入附加到单元格之前和之后,以及在将单元格附加到行之后,我都尝试过更改值。我创建了新的“let”变量,而不是为输入、单元格和行使用this.elem定义的变量。文本输入始终呈现为空。提前感谢您的帮助:-)

我找到了解决问题的方法。 我没有使用element.value,而是使用element.setAttribute('value','blah blah blah…'),这很有效

所以这个:

this.elem.umRow = document.createElement('tr')
this.elem.umCell = document.createElement('td')
this.elem.uaeInput = document.createElement('input'); this.elem.uaeInput.type = 'text'
this.elem.uaeInput.value = edit ? user.uname : ''
this.elem.umCell.appendChild(this.elem.uaeInput); this.elem.umRow.appendChild(this.elem.umCell)
变成这样:

this.elem.umRow = document.createElement('tr')    
this.elem.umCell = document.createElement('td')
this.elem.uaeInput = document.createElement('input'); this.elem.uaeInput.type = 'text'
this.elem.uaeInput.setAttribute('value', edit ? user.uname : '')
this.elem.umCell.appendChild(this.elem.uaeInput); this.elem.umRow.appendChild(this.elem.umCell)
希望这对别人有帮助