textarea的value與innerHTML


問題的來由

今天有一位朋友問到關于 textarea標簽的問題,開始時我不以為意。因為在我看來,因為這是一個很簡單的標簽,它表示一個可增刪字符的文本域,可以利用 textareaplaceholdervalue 屬性來做一些適當的操作;用 cols rows 控制 列數,行數(當然,更好是用CSS的width和height)......嗯,就這些了。不過,你可以先看看下面的代碼:

<textarea cols="20" rows="5"><i>斜體</i></textarea>

這是什么?
textarea 里的 i 真是一個“斜體”嗎?結果你應該能猜到,它不可能是一級標題,其真正表現如下:
<textarea cols="20" rows="5"><i>斜體</i></textarea>
textarea中的所有字符,都會被當作是“字符串值”,也就是說 “<i>”只是 '<'+'i'+'>' 的一個字符串, textarea內不可能存在其他標簽。到這里,你甚至可能就會有個疑問了,為什么 textarea是一個雙標簽?在標簽內寫入字符串有什么用?
我們可以試驗以下代碼:

<textarea cols="20" rows="5"><i>斜體</i></textarea>
document.getElementById('mt').innerHTML;// "&lt;o\i&gt;標題&lt;/i&gt;"
document.getElementById('mt').value;// "<i>斜體</i>"

有趣的是,在讀取 innerHTML 的時候,尖括號字符都被變為轉義字符,而且我們嘗試去讀其 value 值時,竟然可以完整讀取里面的內容,這說明了 innerHTML 可以作為其 value 值?
是這樣的嗎?繼續看下去:
<textarea cols="20" rows="5"><i>斜體</i></textarea>

var mt = document.getElementById('mt');
mt.innerHTML; //"&lt;i&gt;標題&lt;/i&gt;"
mt.innerHTML = 'heiheihei';
mt.value;// "heiheihei" //恩,value值確實改變了
mt.value = 'yoyoyo'; //改變其 value
mt.innerHTML;//"heiheihei" //改變 value 值,并不會使得innerHTML改變
mt.innerHTML = 'zezeze'; //再次改變 innerHTML ,看看 value 會不會變
mt.value; //"yoyoyo" value值并不會改變

結論

如果你有耐心把上面的連鎖操作看完,相信你對我要解釋的東西已然明白。
簡單地說來,在 textarea內的 innerHTML 是字符串;在我們沒有對textareavalue 屬性進行操作之前,如果你對 textarea 賦予了 innerHTML (字符串值),那么 textarea就擁有了一個起始狀態的默認期望 value 值,并且可以通過 value 屬性(或者 innerHTML 操作)來獲取。不過,當你對 value 屬性進行更改后(包括在文本域內的更改),innerHTML 作為一個初始期望值,就不會再起作用了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • HTML標簽解釋大全 一、HTML標記 標簽:!DOCTYPE 說明:指定了 HTML 文檔遵循的文檔類型定義(D...
    米塔塔閱讀 3,310評論 1 41
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,886評論 18 139
  • 一、什么是創始人精神 克里斯·祖克和詹姆斯·艾倫認為,創始人精神作為企業創始者在公司初創時期的正確方略,一般有三個...
    平行夏閱讀 449評論 0 0
  • 這幾天在想畢業論文的內容怎么整。雖然文章發表要求已經滿足了,但是學位論文的內容仍然不夠豐富。要加新內容的話,需要學...
    lxt閱讀 224評論 0 1
  • 我有幸參加了二0一七年暑假心理咨詢師的培訓,這幾天大概是入夏以來最熱的幾天了,天氣雖熱卻依然阻擋不了大家學...
    木子accd閱讀 201評論 0 0