Skip to content

jQuery 插入內容:text() 與 html()

jQuery 插入到 DOM 中:text 與 html

在元素中讀取或插入新內容,是 jQuery DOM 操作 最常用到的一組方法。兩者的差別只有一個:要不要把字串當成 HTML 解析

text()

讀取

讀取指定元素中的文字內容。它會把該元素底下所有後代的文字串接起來,連同換行與縮排的空白一起回傳。

js
text();

範例

html
<div id="Dom">
  <ul>
    <li>List Item 1</li>
    <li>List Item 2</li>
    <li>List Item 3</li>
    <li>List Item 4</li>
    <li>List Item 5</li>
  </ul>
</div>
js
const str = $('#Dom').text();

/*
  List Item 1
  List Item 2
  List Item 3
  List Item 4
  List Item 5
*/
console.log(str);

設定

在指定的元素中插入文字內容。原本的子元素會被整段替換掉。

js
text(text);

參數

功能說明型別範例備註
text文字內容String'Hello jQuery'必填

範例

html
<div id="Dom">DOM</div>
js
$('#Dom').text('Hello jQuery');

html()

讀取

讀取指定元素中的 HTML 內容。

js
html();

範例

html
<div id="Dom">
  <ul>
    <li>List Item 1</li>
    <li>List Item 2</li>
    <li>List Item 3</li>
    <li>List Item 4</li>
    <li>List Item 5</li>
  </ul>
</div>
js
const code = $('#Dom').html();

/*
  <ul>
    <li>List Item 1</li>
    <li>List Item 2</li>
    <li>List Item 3</li>
    <li>List Item 4</li>
    <li>List Item 5</li>
  </ul>
*/
console.log(code);

設定

在指定的元素中插入 HTML 內容,字串會被解析成真正的 元素

js
html(htmlString);

參數

功能說明型別範例備註
htmlStringHTML 內容String'<h1>Hello jQuery</h1>'必填

範例

html
<div id="Dom">DOM</div>
js
$('#Dom').html('<h1>Hello jQuery</h1>');

內容來源要可信

html() 會執行插入內容中的標籤,若內容來自使用者輸入或外部服務,就可能被塞進惡意的腳本(XSS)。只要放的是純文字,就改用 text() 最安全。

常見問題

text 和 html 差在哪?

text() 只處理純文字,標籤會被當成字串原樣顯示;html() 則會把字串解析成真正的 HTML 結構插進去。

為什麼建議優先用 text?

html() 會執行插入內容中的標籤,若內容來自使用者輸入或外部服務,就可能被塞進惡意的腳本。只要放的是純文字,就用 text() 最安全。

讀取時會拿到什麼?

text() 會把該元素底下所有後代的文字串接起來,連同換行與縮排的空白一起回傳;html() 則回傳第一個元素內部的 HTML 字串。相關的原生屬性可參考 節點的屬性

設定內容會蓋掉原本的東西嗎?

會。兩者都是整段替換,原本的子元素會全部被移除。若只是要在既有內容後面補上東西,應改用 append() 這類插入方法。

選到多個元素時的行為一樣嗎?

不一樣。讀取只會拿第一個元素的內容(text() 例外,它會串接集合中所有元素的文字),設定則會套用到集合中的每一個元素。

延伸閱讀

參考資料:jQuery API:Manipulation