JavaScript段落展開收起效果

螞蟻小編發表於2018-05-22

本章節分享一段程式碼例項,它實現了段落的展開和收起的效果。

通常用於解決大段落文字佔用空間過多。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style>
#box {
  width: 280px;
  border: #999 1px solid;
  padding: 10px;
}
p {
  line-height: 24px;
}
a {
  color: #096;
  cursor: pointer;
}
</style>
<script>
window.onload = function () {
  textShow(box, 30)
}
function textShow(obj, num) {
  var oSpan = obj.getElementsByTagName("span")[0];
  var oA = obj.getElementsByTagName("a")[0];
  var str = oSpan.innerHTML;
  var onOff = true;
 
  oSpan.innerHTML = str.substring(0, num);
  oA.onclick = function () {
    if (onOff) {
      oSpan.innerHTML = str;
      oA.innerHTML = "收起";
    } else {
      oSpan.innerHTML = str.substring(0, num);
      oA.innerHTML = "...展開";
    }
    onOff = !onOff;
  }
}
</script>
</head>
<body>
<div id="box">
  <p>
    <span>螞蟻部落歡迎您,本站的url地址是www.softwhy.com,隨時提供有益的建議和意見</span>
    <a>展開..</a>
  </p>
</div>
</body>
</html>

上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。

一.程式碼註釋:

(1).window.onload = function () {},當文件內容完全載入完畢再去執行函式中的程式碼。

(2).textShow(box, 30),此函式的功能在下面會介紹。

(3).function textShow(obj, num) {},此函式實現了展開收起功能,第一個引數是是元素物件,這裡是div元素的id屬性值,id屬性值可以直接作為物件使用,第二個引數規定顯示的字元數量,超出的用省略號替代。

(4).var oSpan = obj.getElementsByTagName("span")[0],獲取span元素集合中的第一個span元素物件。

(5).var oA = obj.getElementsByTagName("a")[0],獲取連結a元素集合中的第一個a元素物件。

(6).var str = oSpan.innerHTML,將span元素中html內容賦值給變數str,暫時儲存起來。

(7).var onOff = true,宣告一個變數並賦值為true,作為一個標識。

(8). oSpan.innerHTML = str.substring(0, num),將擷取指定長度的html內容寫入span元素中。

(9). oA.onclick = function () {},為連結a元素註冊onclick事件處理函式。

(10).if (onOff) {

  oSpan.innerHTML = str;

  oA.innerHTML = "收起";

},如果onOff等於true。

那麼就將oA的html內容設定為str。

同時連結a元素的html內容設定為"收起"。

(11).else {  oSpan.innerHTML = str.substring(0, num);

  oA.innerHTML = "展開...";

},否則的話,span元素的內容設定為擷取後的html字串。

並且將連結a的html設定為"展開..."。

(12).onOff = !onOff,取反。

二.相關閱讀:

(1).getElementsByTagName()參閱document.getElementsByTagName()一章節。

(2).innerHTML參閱innerHTML一章節。

(3).substring()參閱javascript substring()一章節。

相關文章