以下是我在開發中遇到的情況:
1.動態刪除table裡的某一行。
table:表示table物件。
k:表示行號
table.rows[k].removeNode(true); //firefox執行失敗,ie執行成功
IE與FireFox相容寫法
table.deleteRow(k);
2、為HTML標籤自訂屬性。
inputElement:表示表單元素。
propertyName:表示表單元素下的某個屬性
inputElement.propertyName; //firefox執行失敗,ie執行成功
IE與FireFox相容寫法
document.getElementById("txtInput").attributes["idvalue"].nodeValue
3.在指定位置插入HTML元素。
inputElement:表示表單元素。
vDiv:表示將要插入的HTML元素。
inputElement.insertAdjacentElement("AfterEnd",vDiv);//firefox執行失敗,ie執行成功
IE與FireFox相容寫法
在firefox中,沒有該方法的定義,因此,如果需要呼叫方法,則需要自行重定義方法。
複製代碼代碼如下:
//重寫insertAdjacentElement()方法,因為firefox中沒有該方法
HTMLElement.prototype.insertAdjacentElement=function(where,parsedNode){
switch(where){
case "beforeBegin":
this.parentNode.insertBefore(parsedNode,this);
break;
case "afterBegin":
this.insertBefore(parsedNode,this.firstChild);
break;
case "beforeEnd":
this.appendChild(parsedNode);
break;
case "afterEnd":
if(this.nextSibling)
this.parentNode.insertBefore(parsedNode,this.nextSibling);
else
this.parentNode.appendChild(parsedNode);
break;
}
}
4.break語句失效。
在IE裡執行for迴圈語句時原本使用break可以跳出當次迴圈。但在FF裡面就變成了退出整個循環。這時候改用continue語句即可。
5、firefox報String contains an invalid character。
var chkBox=document.createElement('<input type="Checkbox" name="treeBox" value= '+key+'>'); //在IE下成功執行
IE與FireFox相容寫法
firefox不支援這種createElement的定義方式,需要逐步進行:
複製代碼代碼如下:
var chkBox = document.createElement('input');
chkBox.name = "treeBox";
chkBox.type = "checkbox";
chkBox.value = key;
6、table 物件的(表格行)物件的集合
bdList.rows(k).cells(0).innerHTML = "<a>aaa</a>";//firefox執行失敗,ie執行成功
IE與FireFox相容寫法
複製代碼代碼如下:
bdList.rows[k].cells[0].innerHTML = "<a>aaa</a>";
7.JS的getYear()方法在firefox裡的問題
var today = new date();
var year = today.getYear();
在Firefox 裡面getYear 回傳的是"當前年份-1900" 的值IE裡面則:
當today的年份小於2000的時候,和firefox一樣。所以最好用getFullYear getUTCFullYear 去調用
IE與FireFox相容寫法
複製代碼代碼如下:
var today = new date();
var year = today.getFullYear();