2015-04-03 254 views
11

我試圖抓住「價值」這個div,這是可編輯的內部:爲什麼innerHTML返回'undefined'?

<div class="editable-div" contentEditable="true">Hey</div> 

我想我可以簡單地通過JavaScript這樣做:

var changedText = $('.editable-div').innerHtml 

然而,這個變量將始終返回「未定義」,這使我感到困惑。

有人能告訴我如何達到這個「價值」嗎?

+2

您創建了一個jQuery對象。它沒有'innerHTML'屬性。你應該使用'html'方法來讀取幕後的'innerHTML'屬性! '$('。editable-div')。html()' – undefined 2015-04-03 16:03:25

+0

@Vohuman謝謝,老兄! – Yeats 2015-04-03 16:07:17

回答

24

這是jQuery的 - 你必須使用:

$('.editable-div').html() 
+2

啊,呵呵,有時我不確定Javascript結束和jQuery開始的地方。謝謝! – Yeats 2015-04-03 16:06:29

+2

提示:如果有'$',那麼它可能是jQuery – dave 2015-04-03 16:07:17

+0

它帶有exp = - )jQuery - 只是一個庫,但功能強大的庫)不要忘記批准和改進SO – Legendary 2015-04-03 16:07:24

1

innerHtml用於使用javascript選擇和你使用jQuery。所以用.html().text()函數替換innerHtml

使用此:

var changedText = $('.editable-div').html(); 
0

的innerHTML是DOM。嘗試$('。editable-div')[0] .innerHtml

3

一個jQuery包裝的對象實際上不是原始DOM節點,而是基本上是一個原始DOM節點的數組,可以用jQuery特定的方法來處理作爲.html()。如果你想與DOM節點交互,可以通過列表或者迭代或得到該列表的元素,如果你知道它是哪一個檢索:

$('div').each(function(index, element) { 
    element.innerHTML // ... 
} 

$('div').get(0).innerHTML 
$('div')[0].innerHTML 

注意的是,雖然它是「一種「就像數組一樣,你可以使用$('div')[0]的數組語法獲得DOM節點,你不能把它當作Javascript中的數組來對待。換句話說,你不能做到這一點:

$('div').forEach(function(element) { 
    element.innerHTML 
}