innerHTML无法正确更新

时间:2012-01-01 14:25:47

标签: javascript html dom innerhtml

我正在尝试在Javascript中构建一些基本的HTML表单验证。我的表单保存在一个表格中,我在每个输入的右边有一个额外的列,其ID为“ErrorX”,最初填充了一些文本以显示它是必填字段。

<FORM NAME="ContactForm" METHOD=POST ACTION='Order3.php' onsubmit="return validateForm()">
<TABLE>
 <TR>
  <TD ALIGN=LEFT>Your name:</TD>
  <TD ALIGN=RIGHT><INPUT TYPE=TEXT ID="Field1" NAME="Field1"></TD>
  <TD ALIGN=LEFT ID="Error1">Required</TD>
 </TR>
</TABLE>
<input type=submit value='Confirm ->'></FORM>

当按下提交按钮时,我已经让代码验证字段并尝试更改最右边的列文本。执行此操作的代码行是:

document.getElementById("Error1").innerHTML = "ERROR";

代码正确执行并检测错误,并删除现有措辞,但不显示新文本。如果我查询document.getElementById(“Error1”)。innerHTML的值,我会得到正确的文本,但它没有出现在屏幕上。

我正在使用Safari v5.1.2,它使用我从网上复制的基本示例,所以我认为这是我的代码而不是浏览器。

3 个答案:

答案 0 :(得分:3)

innerHTML在safari中肯定有用。请参阅此演示http://jsfiddle.net/zxMKM/

显而易见的原因是你的html标记无效,浏览器会自行进行错误恢复并在此过程中生成自己的DOM。
因此,请验证您的html http://validator.w3.org/

另请注意,td.innerHTML仅适用于IE8 因此,它更易于使用td.innerText

答案 1 :(得分:0)

我在iPAD safari上有类似的问题,它没有正确更新div值。 我已经浏览了很多帖子并尝试了很多选项,但对我有用的是 text()。

答案 2 :(得分:-2)

<td align="left"><div id="Error1">Required</div></td>