開發跨瀏覽器javascript常見注意事項
2024-05-06 14:16:18
供稿:網友
一、向表追加行
在以往使用Ajax的經歷中,你很可能會使用JavaScript向現有的表中追加行,或者從頭創建包含表行的新表。document.createElement和document.appendChiid方法可以使這很容易做到,只需使用document.createElement創建表單元格,再使用document.app-endChild方法將這些表單元格增加到表行。接下來的編輯步驟是使用document.append-
Child將表行增加到表中。
在Firefox、Safari和Opera等當前瀏覽器中,這樣做是可以的。不過,如果使用的是lE,表行則不會在表中出現。更糟糕的是,IE甚至不拋出任何錯誤,或對表行確實已經追加到表中卻不會顯示出來的問題提供任何線索。
在這種情況下,解決方法很簡單。IE允許將tr元素增加到tbody元素,而不是直接增加到table元素。例如,如果定義一個空表如下:
<table id="myTable">
<tbody id="myTableBody"></tbody>
</table>
向這個表中增加行的正確做法是把行增加到表體,而不是增加到表,如下所示:
var cell=document.createElement("td").appendChild(document.createTextNode("foo"));
vat row=document.createElement("tr").appendChild(cell);
document.getElementByld("myTableBody").appendChiid(row);
辛運的是,這種方法在所有當前瀏覽器上都能用,也包括IE。如果你養成習慣,總是使用表中的表體,就不用擔心這個問題了。
二 通過javascript設置元素的樣式
利用Ajax技術,開發人員創建的Web應用可以與服務器無縫地通信,而無需完全頁面刷新。但對于A1ax請求,是不會出現這種頁面閃爍的,所以用戶可能不知道頁面上有些數據已經更新。你可能想修改某些元素的樣式,指示頁面上一些數據已經改變。例如,如果股票的價格已經通過Ajax請求得到了無縫更新,可以加亮顯示這支股票的名字。
可以通過JavaScript使用元素的setAttribute方法設置元素的樣式。例如,要把span元素中的文本修改為采用紅色粗體顯示.可以使用setAttribute療法如下:
var spanElement = document.getElementById("mySpan");
spanElement.setAttribute("style", "font-weight:bold; color:red;");
除了IE、這種方法在當前其他瀏覽器上都是行得通的。對于IE,解決方法是使用元素style對象的cssText屬性來設置所需的樣式.盡管這個屬性不是標準的,但得到了廣泛支持,如下所示:
var spanElement = document.getElementById("mySpan");
spanElement.style.cssText = "font-weight:bold; color:red;";
這種方法在IE和大多數其他瀏覽器上部能很好地工作,只有Opera除外。為了讓代碼在所有當前瀏覽器上都可移植,可以同時使用這兩種方法,也就是既使用setAttribute方法,也使用元素style對象的cssText屬性,如下所示:
var spanElement = document.getElementById("mySpan");
spanElement.setAttribute("style", "font-weight:bold; color:red;");