IE下的select和Date

Author : lovecicy

好久没发文章了,发一篇学习笔记吧。

一、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;
}
standard

Have your say