2010-08-18 65 views
0

我有以下功能:innerhtml IE td元素的解决方法?

<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)的谷歌搜索,因为告诉我,表中的元素是一个“未知的运行时错误”带有innerHTML的IE只读。

我试着找到解决方法,但他们不针对我的具体问题,这只是我想让词“酒吧”红色。我不想将“酒吧”这个词改为别的。纯粹是一种颜色的变化。

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

感谢您的任何建议。

回答

0

为什么不改变细胞有color:'red'

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

大声笑...谢谢你的工作。真的不知道这可能是那么简单.. – ihatejavascript 2010-08-18 03:24:57

0

夫妇的方式去做。这里有一些让你走的快捷方式 - 或者直到其他人使用更清洁/更好的方法。

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

.errorHighlight { color:red;} 

那么对于JavaScript的:

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

这假定您尚未设定任何类也。如果你这样做,你可能需要读取名称,并将错误类添加一个空格。

再次,有很多方法可以解决这个问题,并且您想选择最适合您的应用的方法。