display属性在IE和火狐下的兼容

在做一个web应用时有用到表格行的现实与隐藏问题,开始实现如下:

……
<input type="button" value="test" onclck=test()></input>

<tr class="aa" style="display:none"><td>……</td><tr>

……

<srcipt language="javascript">

function test(){

 if($('.aa').attr('style')=='display:none'){

  $('.aa').removerAttr('style');

}else{

  $('.aa').attr('style','display:none');

}

}

</script>

    在火狐下可以正常运行,但是在IE下却不能正确执行  ,分析后认为style属性removerAttr之后,IE下会有undefined异常

后修改代码如下

……
<input type="button" value="test" onclck=test()></input>

<tr class="aa" style="display:none"><td>……</td><tr>

……

<srcipt language="javascript">

function test(){

var flag = $('.aa').attr('style');

 if($('.aa').attr('style')=='display:none'||typeof(flag)!="undefined"){

  $('.aa').removerAttr('style');

}else{

  $('.aa').attr('style','display:none');

}

}

</script>

 

 

这样,仍然不能正确执行,于是采用jquery的show和hiden方法

代码如下 

……
<input type="button" value="test" onclck=test()></input>

<tr class="aa" style="display:none"><td>……</td><tr>

……

<srcipt language="javascript">

function test(){

var flag = $('.aa').attr('style');

 if($('.aa').attr('style')=='display:none'||typeof(flag)!="undefined"){

  $('.aa').show();
}else{

  $('.aa').hiden()
}

}

</script>

 

这种情况下,在火狐下可以,但是在IE下不行,打印style属性得知,在执行完show方法后,属性style变为"DISPLAY: none"(注意,display为大写,且“:”后有空格)。在火狐下则属性style变为"display: none;"

为了兼容两种浏览器情况,最终代码该为如下:

……
<input type="button" value="test" onclck=test()></input>

<tr class="aa" style="display:none"><td>……</td><tr>

……

<srcipt language="javascript">

function test(){

var flag = $('.aa').attr('style');
if(typeof(flag)!="undefined"){
    flag = flag.toLowerCase();
}

 if(flag=='display: none'||flag=='display: none;''){

  $('.aa').show();
}else{

  $('.aa').hiden()
}

}

</script>

 

posted @ 2012-02-06 10:57  通行天下  阅读(2038)  评论(0编辑  收藏  举报