2008/10/20

js中getYear的IE与FF差异

在js中,如果我们对Date对象进行getyear的操作
那么按照手册中的说法:
使用getYear()方法可返回两位或四位数的年份
手册中也提及了两个注意要点:
  1. 用getYear()返回的数并不一定是4位的!处于1900年和1999年间的getYear()方法返回的只有两位数。在此之前的或是在此之后的年份返回的都是四位数的
  2. 这个方法得结合Date对象一起使用
但是以上的说法也不尽然准确,在FF下我们获取的数据无论是否超过1999年都需要+1900才能够表达正确年份,例如2008年在FF下返回的是108而在IE下却是2008.
为了适应这种情况,我们应当采取手册中的建议:
  1. getYear()方法不应该再使用了。最好是用getFullYear方法!!
如此一来,无论在IE或FF下都能够返回完全的年份,例如2008:-)

table操作中IE与FF的差异

最近在html表格操作中遇见了一些代码
var newRow = t.insertRow(insertpoint);
newRow.id = newRow_id;
newRow.innerHTML = html;
这段代码在FF下正常运行,在IE下却报出莫名错误。通过google了解了一些别人的处理方法,学习并总结如下:
在IE下,以下特性被严格遵循:
table tbody tr 的innerHTML 为只读
td tr tbody 的outerHTML 为只读

通过以下JS的运行我们便可以看出端倪:
《table id="table"》
《tbody id="tbody"》
《tr id="tr"》
《td id="td"》内容 《/td》
《/tr》
《/tbody》
《/table》
《script type="text/javascript"》
var $ = function () {
return document.getElementById(arguments[0]);
};
window.onload = function () {
try {
$("table").innerHTML = " 《tbody》 《tr》 《td》变更table 《\/td》 《\/tr》 《\/tbody》";
} catch (exp) {
try {
$("tbody").innerHTML = " 《tr》 《td》变更tbody 《\/td》 《\/tr》";
} catch (exp) {
try {
$("tr").innerHTML = " 《td》变更tr 《\/td》";
} catch (exp) {
$("td").innerHTML = "变更td";
}
}
}
};
《/script》
基于博客编辑器的限制,运行测试时候请将'《'替换为'<','》'替换为'>'。
运行后我们便可发现实际执行生效的只有“变更td”。当然我们也有变通方法,就是通过insertCell来进行新的tr的拼接。