2010-08-18 47 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=""; 
} 

這假定您尚未設定任何類也。如果你這樣做,你可能需要讀取名稱,並將錯誤類添加一個空格。

再次,有很多方法可以解決這個問題,並且您想選擇最適合您的應用的方法。