0

更改容器 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>
4

2 回答 2

0

我在您的 javascript 代码中发现了一个问题。您可能知道,无序列表标签默认情况下应该被阻止,并且您正试图使其内联在您的 js 代码中(隐藏后)。只需尝试将您的 showObjDiv 函数更改为如下所示:

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

之后它应该可以正常工作。

于 2013-09-26T06:19:33.713 回答
0

设置visibility:hiddendisplay:none是有区别的。当您设置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');
    }

这样在重新显示元素后,指定的类就会附加到它上面。

于 2013-09-26T07:18:27.137 回答