IE下的select和Date
好久没发文章了,发一篇学习笔记吧。
一、select的问题
首先说个select的问题,如果要获取当前选中的select的option的index,可以用这个方法,对各个浏览器都有效:
document.getElementById('select id').selectedIndex
如果用jQuery,则是:
$('#select id').prop('selectedIndex')
但是如果要获取当前选中的option的value,情况就就不一样了。如果在option里给每个option都设置了value值,那么在所有浏览器中,都可以这么拿:
document.getElementById('select id').value/$('#select id').val()
而如果没有为option设置value值,则我们可能希望拿到当前选中的option的text,这时候用上面的方法,FF和chrome可以正常work,在IE下,jQuery的方式可以拿到value,通过原生的js就会拿到空字符串。
这时候针对IE,需要用下面这种方法:
var select = document.getElementById('select id') select.options[select.selectedIndex].value
这样,就能拿到option的text了。
有一点搞不清楚的是,为什么我没有为option设置value属性,但是通过option的value可以得到text,而通过select的value就取不到呢?
二、Date对象
另外一个问题是关于Date对象的。当我们new 一个Date的时候,可以通过参数,指定一个日期,比如
new Date('19/Jul/2013')
在FF和chrome下,这种表示方式可以得到一个正确的Date对象,但是在IE下,会得到一个invalid date,不会报错,但是当我们通过.getTime()方法获取毫秒数时,就会得到一个NaN。所幸的是IE支持通过下面的表达式来新建一个Date对象:
new Date(year,month,date)
其中的参数可以是数字,也可以是字符串。
三、CSS hack
IE8/IE7的CSS hack:在css rule后面加”\9″。
#someid{ position:absolute\9; }