IE td元素的innerhtml变通方法?

时间:2010-08-18 03:02:45

标签: javascript css internet-explorer dom innerhtml

我有以下功能:

<script type="text/javascript">
function changeText(elem){
  var oldHTML = document.getElementById(elem).innerHTML;
  var newHTML = "<span style='color:red'>" + oldHTML + "</span>";
  document.getElementById(elem).innerHTML = newHTML;
 }

</script>

以下HTML:

<table>
<tr>
<td id = "foo">bar</td>
</tr>
</table>

这引发了一个“未知的运行时错误”(仅在IE中),谷歌搜索后来告诉我,表元素在IE中是只读的,带有innerHTML。

我已经尝试过找到解决方法,但是他们没有针对我的具体问题,这就是我想让“bar”这个词变成红色。我不想将“bar”改为其他东西。纯粹是换色。

如果没有复杂而缓慢的DOM功能并且无需更改页面上的任何其他HTML标记,有没有办法做到这一点?这是一个包含表单的表格,如果冲浪者提交带有错误的表单,“错误”字段应该变为红色。它必须能够多次执行,因为冲浪者可能会淹没多个领域。

感谢您的任何建议。

2 个答案:

答案 0 :(得分:0)

为什么不将单元格更改为color:'red'

var td = document.getElementById(elem);
td.style.color = 'red';

答案 1 :(得分:0)

有几种方法可以解决这个问题。这里有一些快速的方法可以帮助您 - 或者直到其他人使用更清洁/更好的方法。

我更喜欢以下内容:在css中定义错误类:

.errorHighlight { color:red;}

然后是javascript:

function changeText(elem){ 
  document.getElementById(elem).className="errorHighlight"; 
} 
function changeTextBack(elem){ 
  document.getElementById(elem).className=""; 
} 

这假设您没有设置任何类。如果这样做,您可能需要读取名称,并使用空格附加错误类。

同样,有很多方法可以解决这个问题,您希望选择最适合您应用的方法。