2015-04-03 19 views
11

Ich versuche, den „Wert“ in diesem div zu fangen, die bearbeitet werden kann:Warum kehrt innerHTML 'undefiniert' zurück?

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

ich, dass ich dies über JavaScript einfach tun dachte könnte:

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

jedoch diese Variable wird immer Rückkehr "undefined", was mich verwirrt.

Kann mir jemand erklären, wie man diesen "Wert" erreicht?

+2

Sie sind ein jQuery-Objekt erstellen. Es hat keine "innerHTML" -Eigenschaft. Sie sollten die Methode 'html' verwenden, die die Eigenschaft 'innerHTML' hinter den Kulissen liest! '$ ('. editable-div') .html()' – undefined

+0

@Vohuman Danke, Mann! – Yeats

Antwort

24

Es ist jQuery - Sie verwenden:

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

Ah duh, manchmal bin ich mir nicht sicher wo Javascript aufhört und jQuery beginnt. Vielen Dank! – Yeats

+2

Hinweis: wenn es ein '$' ist, dann ist es wahrscheinlich jQuery – dave

+0

Es kommt mit exp = -) jQuery - nur eine Bibliothek, aber leistungsfähige Bibliothek) nicht vergessen, genehmigen ans für die Verbesserung SO – Legendary

1

innerHtml mit Javascript-Selektor verwendet wird und Sie jQuery verwenden. Ersetzen Sie also innerHtml durch .html() oder .text() Funktion. diese

Verwendung:

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

innerhtml ist DOM. try $ ('. editable-div') [0] .innerHtml

3

Ein jQuery-Wrapped-Objekt ist eigentlich nicht der rohe DOM-Knoten, sondern im Wesentlichen ein Array von rohen DOM-Knoten, die mit jQuery-spezifischen Methoden wie z als .html(). Wenn Sie mit dem DOM-Knoten zu interagieren möchten, können Sie es entweder durch Abrufen durch die Liste iterieren oder das Element dieser Liste bekommen, wenn Sie wissen, welches es ist:

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

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

Beachten Sie, dass, während es „Art "Wie ein Array, in dem Sie DOM-Knoten mit der Array-Syntax $('div')[0] erhalten können, können Sie es nicht wie ein Array in Javascript behandeln. Mit anderen Worten: Sie kann dies nicht tun:

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