Javascript 更改输入值后未更新innerHTML(checked=true/false/";checked";)

Javascript 更改输入值后未更新innerHTML(checked=true/false/";checked";),javascript,Javascript,简介:我需要获取parentElement中的信息,但我需要更新输入信息。当我抓取parentElement的innerHTML时,在取消选中该框后,它仍然显示为选中状态。html没有反映我用javascript所做的更改 我这里有一小部分代码: 把邮件带进来 : 单击加载时检出:选中=选中 取消选中框:选中=选中 更改为false:警报确认checked属性为false,但check it out显示innerHTML为checked 我需要在加载适当信息的情况下访问此innerHTML(

简介:我需要获取parentElement中的信息,但我需要更新输入信息。当我抓取parentElement的innerHTML时,在取消选中该框后,它仍然显示为选中状态。html没有反映我用javascript所做的更改

我这里有一小部分代码:


把邮件带进来

:

单击加载时检出:选中=选中

取消选中框:选中=选中

更改为false:警报确认checked属性为false,但check it out显示innerHTML为checked

我需要在加载适当信息的情况下访问此innerHTML(如中所示,如果它被选中,html应该反映这一点)


预编辑:我想我可以通过点击标签来做一个事件。该事件获取(“parentElement”).innerHTML并将其拆分到几个不同的位置,然后将其与正确的选中值放回一起。如果一开始没有检查输入,则会略有不同。这是我能想到的唯一方法,但它似乎不是正确的方法。

复选框的状态和输入框的值不是源HTML的一部分

为了证明这一点,请尝试在带有
value=“old”
的页面上放置一个文本框,更改该值,然后比较
element.getAttribute(“value”)
element.value
-它们不相同


您确实应该保存表单的状态,而不是表单后面的HTML。

之所以发生这种情况,是因为
元素.childNodes[0]。checked=false
正在设置DOM属性,该属性是一个独立于HTML属性的实体

您的
checkit
函数还应该询问DOM属性,而不是检查
innerHTML


有关DOM属性和HTML属性的更多信息,请参阅。

旁注:您的
元素
变量是一个隐式全局变量,请不要忘记您的
var
。谢谢。我做得很快,应该更好地练习以保持良好的格式。我希望保留HTML,以便我可以将此内部HTML作为电子邮件发送,并将其作为报告的一部分发送到打印机。setAttribute/removeAttribute似乎有效吗?我真的想使用表单的状态吗?set/removeAttribute是我真正想编辑的。我从学习jQuery开始。。。并且最近决定学习实际的javascript语言。谢谢你给我指出了正确的方向。我选择这个答案是因为我需要编辑HTML以在电子邮件中将HTML发送给客户。我检查了输入是否为.checked==true//then.setAttribute(“checked”,“checked”).checked==false//then.removeAttribute(“checked”)@NicholasDecker很高兴我能帮上忙。实际上,它对我的帮助远远不止于我正在写的这篇简单的文章。再次感谢。
<div id="parentElement">
<label id="thisLabel">
    <input type="checkbox" id="idnumber" checked="checked"> Bring Mail Inside
</label>
</div>
<p>
<a onClick="checkit()">Check it out</a>
</p>
<p onclick="checkToggle()">change to false</p>


function checkit() {
alert(document.getElementById("parentElement").innerHTML);
}
function checkToggle() {
element = document.getElementById("thisLabel");
element.childNodes[0].checked = false;
alert("the checkbox is checked: " + element.childNodes[0].checked);
}