亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么出錯呢??全文展開但是收起的時候摘要都收起來了??

為什么出錯呢??全文展開但是收起的時候摘要都收起來了??

qq_蘇達晟_0 2016-09-13 13:49:04
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />? <title>點擊按鈕控制展開全文與收起全文</title> <style type="text/css"> #art0{ width: 950px; height: auto; border: 1px solid #e7cfcf; padding:10px; margin:0 auto; } .artT{ font-weight: bold; } .butT{ color:#d5d5d5; } .buttom{ text-align: right; line-height: 30px; } .btn{ border: 1px solid #636363; padding:5px; text-decoration: none; background-color: #f0f0f0; } </style> <script src="js/jquery.js"></script> <script> /*function showdiv(obj) { var x = obj.parentNode;//摘要; var y = x.nextSibling;//正文; x.style.display = "none"; y.style.display = "block" }; function hidediv(obj) { var y = obj.parentNode.parentNode; var x = y.previousSibling; x.style.display = "block"; y.style.display = "none"; }*/ function showdiv(obj){? ? ? ? var x=obj.parentNode;//摘要? ? ? ? var y=nextnode(x.nextSibling);//正文? ? ? ? x.style.display="none";? ? ? ? y.style.display="block"? ? }? ? function hidediv(obj){? ? ? ? var y = obj.parentNode.parentNode;//這才是正文? ? ? ? var x = nextnode(y.previousSibling);//摘要? ? ? ? x.style.display="block";? ? ? ? y.style.display="none";? ? }? ? function nextnode(node){? ? ? ? ? ? if(node.nodeType == 1){ //判斷是否是元素節點,排除空的文本節點? ? ? ? ? ? ? ? ? ? ? ? ?return node;? ? ? ? ? ? }? ? ? ? ? if(node.nextSibling){? ? ? ? ? ? ? ? ? ? ?return nextnode(node.nextSibling);? ? ? ? ? } } </script></head><body id="meta_pname"> <div id="pn"> <div id="art0"> <p class="artT">青春對白,郵寄我的時光</p> <p class="butT">日期:2016-08-21 09:31:53 點擊:7068</p> <p>1、手心捧著的文字,清清淺淺,刻著你的眉,你的眼,素筆深深,想你的日子,光陰開成了一朵思念的花,那妖,那艷。 2、終難忘,年少時光,偶爾臉紅心跳的告白,沒有離別,沒有傷痛,溫暖如花,開滿整個夏天。 3、多年以后,終于明白,世界上總有兩個人是天生一對,有情 <a href="#" onclick="showdiv(this);">...全文</a></p> <div class="content" style="display:none;"> 1、手心捧著的文字,清清淺淺,刻著你的眉,你的眼,素筆深深,想你的日子,光陰開成了一朵思念的花,那妖,那艷?! ? 2、終難忘,年少時光,偶爾臉紅心跳的告白,沒有離別,沒有傷痛,溫暖如花,開滿整個夏天?! ? 3、多年以后,終于明白,世界上總有兩個人是天生一對,有情的會相愛,久別的會重逢,這是你告訴我的答案?! ? 4、月色滿空,微涼如斯。你說我不來,你不走,可花期已過,情心已散,我找遍了城市的每個角落,依然不見你的身影,哭泣的蹲在路邊,像個孩子。   5、說好的幸福,還未到的明天,就揮手再見,是不是每個人的青春,都有無法掩飾的傷,與愛有關,與你有關?! ? 6、學會珍惜和善待對你好的人,因為,不是所有的人,都會對你掏心掏肺?! ? 7、盛夏,月光傾城。半朵煙花下,我們背靠背沉默著,一直到天明,沒有說話,怕一開口就要轉身天涯。 <p class="buttom"> <a href="#" class="btn" onclick="hidediv(this);">收起全文</a> </p> </div> </div> </div> </body></html>
查看完整描述

2 回答

已采納
?
stone310

TA貢獻361條經驗 獲得超191個贊

??function?hidediv(obj){
????????var?y?=?obj.parentNode.parentNode;//這才是正文
????????var?x?=?nextnode(y.previousSibling);//摘要???????
????????//這里有問題,var?x=nextnode方法調用后會return正文部分(即x)
????????x.style.display="block";???
????????y.style.display="none";
????}

按照你代碼的意思,nextnode是檢測元素是否空白節點,是則略過,不是則檢測它的下一個元素;

但是當你收縮的時候,不能再讓它檢測下一個元素,而是應該去檢測上一個元素;

因此,需要添加一個函數 ? 我這里就命名prevnode

function?prevnode(node){
????if(node.nodeType?==?1){?//判斷是否是元素節點,排除空的文本節點
????????return?node;
????}
????if(node.previousSibling){???????????????????//檢測上一個節點時候存在
????????return?prevnode(node.previousSibling);????//存在時,繼續檢測上一個節點是否空白節點
????}
}

收縮按鈕,調用prevnode方法,整片JS代碼如下:

????<script>
????????/*function?showdiv(obj)?{
?????????var?x?=?obj.parentNode;//摘要;
?????????var?y?=?x.nextSibling;//正文;
?????????x.style.display?=?"none";
?????????y.style.display?=?"block"
?????????};
?????????function?hidediv(obj)?{
?????????var?y?=?obj.parentNode.parentNode;
?????????var?x?=?y.previousSibling;
?????????x.style.display?=?"block";
?????????y.style.display?=?"none";
?????????}*/
????????function?showdiv(obj){
????????????var?x=obj.parentNode;//摘要
????????????var?y=nextnode(x.nextSibling);//正文
????????????x.style.display="none";
????????????y.style.display="block"
????????}
????????function?hidediv(obj){
????????????var?y?=?obj.parentNode.parentNode;//這才是正文
????????????var?x?=?prevnode(y.previousSibling);//摘要
????????????console.log(x)
????????????console.log(y)
????????????x.style.display="block";
????????????y.style.display="none";
????????}
????????function?nextnode(node){
????????????if(node.nodeType?==?1){?//判斷是否是元素節點,排除空的文本節點
????????????????return?node;
????????????}
????????????if(node.nextSibling){
????????????????return?nextnode(node.nextSibling);
????????????}
????????}
????????function?prevnode(node){????//新增加函數
????????????if(node.nodeType?==?1){?//判斷是否是元素節點,排除空的文本節點
????????????????return?node;
????????????}
????????????if(node.previousSibling){
????????????????return?prevnode(node.previousSibling);
????????????}
????????}
????</script>


查看完整回答
反對 回復 2016-09-13
?
OlderSkee

TA貢獻123條經驗 獲得超103個贊

?。??刂芻ontent的高度來顯示隱藏吧。。

話說你為什么不直接獲取id 或者 是TagName來獲得元素呢。。

用節點代碼的可讀性太差了。。

查看完整回答
3 反對 回復 2016-09-13
  • 2 回答
  • 0 關注
  • 1754 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號