更改可见性后,背景颜色不适用

时间:2013-09-26 05:59:33

标签: javascript html css

更改容器ul标签的可见性后,粉红色的背景颜色消失。 代码如下。我错过了什么 ?为什么li不继承ul标签的背景颜色?

<style type="text/css">
.div_r3r4_container { width:760px; background-color:lightblue; } 
.div_r3_class     {  margin-left:132px; width:630px;  }
.ul_r3hz_class  { background-color:pink; font-size:0px; padding:2px 2px 1px 3px;list-style:none;margin:0;        }
.li_r3hz_class  { font-size:14px; color:black; display:inline;   }
.ul_r4hz_class {background-color:yellow; font-size:0px; border:1px solid red; padding:1px 2px 2px 3px;list-style:none;margin:0; }
.li_r4hz_class {font-size:14px; color:green; display:inline; }

</style>



<div  id="div_r3_r4_id" class="div_r3r4_container"> 
    <label id="city"> hide and show ul    </label> 

    <div  class="div_r3_class" >  
        <ul class="ul_r3hz_class" id="sid" >
           <li  class="li_r3hz_class"> aaaa, aaaa1, aaa2, aaa3,      </li> 
           <li  class="li_r3hz_class"> aaaaa4, aaaa5,  aaaa5,  aaa6,    </li>   
       </ul>
    </div>        

      <div  class="div_r4_class" >  
        <ul class="ul_r4hz_class"  >
           <li  class="li_r4hz_class"> bb, bbb, bbbb, bbbb2, bbbb3    </li> 
           <li  class="li_r4hz_class"> bbbb5, bbb6, bbb7, bbb8,    </li>   
       </ul>
    </div>        

</div>  



<div>
<input id="minus" value="-" type="submit" style="background-color:white; float:right; font-size:6px;" onClick="hide_show_div('sid', 'minus', 'plus' ); return flase; ">
<input id="plus" value="+" type="submit" style="background-color:white; float:right; font-size:6px;" onClick="show_hide_div('sid', 'minus','plus','div_r3_class' ); return flase; ">

</div>


<script language = "JavaScript">   

function hide_show_div( hideid1, hideid2, showid1 ){
    hideObjDiv( hideid1 ) ; 
    hideObjDiv( hideid2 ) ; 
    showObjDiv( showid1 ) ; 
}

function show_hide_div( showdivid1, showid2, hideid1, newclass ){
    hideObjDiv( hideid1 ) ; 
    showObjDiv( showid2 ) ; 
    showObjDiv( showdivid1 ) ; 
}
function hideObjDiv(obj) {
    if (document.getElementById) { 
        document.getElementById(obj).style.visibility = 'hidden';
        document.getElementById(obj).style.display = 'none';
    }
}

function showObjDiv(obj) {
    if (document.getElementById) { 
        document.getElementById(obj).style.visibility = 'visible';
        document.getElementById(obj).style.display = 'inline';
    } 
} 
</script>

2 个答案:

答案 0 :(得分:0)

我在你的javascript代码中发现了一个问题。您可能知道,默认情况下,无序列表标记应该是块,并且您尝试在js代码中嵌入(隐藏后)。只是尝试将showObjDiv函数更改为以下内容:

function showObjDiv(obj) {
    if (document.getElementById) { 
        document.getElementById(obj).style.visibility = 'visible';
        document.getElementById(obj).style.display = 'block';
    } 
} 

之后应该可以正常工作。

答案 1 :(得分:0)

设置可见性:隐藏显示:无之间存在差异。当您设置 display:none 时,该元素将从流中完全删除,此元素及其所有属性和样式将被删除。如果 obj 元素有css类* div_r3_class *那么(为了简单起见,我使用了jQuery):

function showObjDiv(obj) {
    if (document.getElementById) { 
        document.getElementById(obj).style.visibility = 'visible';
        document.getElementById(obj).style.display = 'inline';
        $("#"+obj).addClass('div_r3_class');
    }

以这种方式重新显示元素后,指定的类将附加到它。

相关问题