textarea文字框高度自適應程式碼例項

admin發表於2018-05-22

預設情況下textarea文字框不能夠實現高度自適應,當輸入的內容超過文字框的高度的時候,就會出現滾動條。

下面通過程式碼例項介紹一下如何利用JavaScript實現文字框隨著內容高度自適應效果。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#shadow,#text{
  font:12px/16px Arial;
  width:200px;
  overflow:hidden;
  height:16px;
}
#shadow{
  position:absolute;
  border-width:0px;
  padding:0px;
  visibility:hidden;
}
#text{resize:none;}
</style>
<script type="text/javascript">
window.onload=function(){
  //使用者看到的文字框
  var text=document.getElementById("text");
  //隱藏的文字框
  var shadow=document.getElementById("shadow");
  text.oninput=text.onpropertychange =onchange;
         
  function onchange(){
    shadow.value=text.value;
    setHeight();
    //針對IE 6/7/8的延遲, 否則有時會有一個字元的出入
    setTimeout(setHeight,0); 
    function setHeight(){ 
      text.style.height=shadow.scrollHeight + "px"; 
    }
  }
};
</script>
</head>
<body>
<textarea id="text"></textarea>
<textarea id="shadow"></textarea>
</body>
</html>

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

一.程式碼註釋:

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

(2).var text=document.getElementById("text"),獲取id屬性值為text的元素物件。

(3).var shadow=document.getElementById("shadow"),獲取id屬性值為shadow的元素物件。

(4).text.oninput=text.onpropertychange=onchange,註冊事件處理函式。

(5).function onchange(),文字框內值發生改變執行的事件處理函式。

(6).shadow.value=text.value,將顯示的文字框的值賦值給隱藏的文字框。

(7).setHeight(),此函式可以設定顯示的文字框的高度。

(8).setTimeout(setHeight,0),//針對IE 6/7/8的延遲, 否則有時會有一個字元的出入。

(9).function setHeight(){ 

  text.style.height=shadow.scrollHeight + "px"; 

},將顯示的文字框高度,設定值為隱藏文字框的scrollHeight屬性值。

二.相關閱讀:

(1).oninput參閱JavaScript input 事件一章節。

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

(3).scrollHeight屬性參閱scrollHeight屬性一章節。

相關文章