Jaka jest różnica między JavaScript innerHTML
, innerText
a childNodes[].value
JavaScript?
javascript
dom
użytkownik 2819851
źródło
źródło
innerText
na niestandardową implementację textContext przez MSIE nie jest trywialne.innerText
został dodany do standardów i obsługiwany przez wszystkie główne przeglądarki.textContent
jest teraz obsługiwany przez IE> = 9 i może być używany zamiastinnerText
w większości przypadków (bonus, jest znacznie szybszy), ale są między nimi różnice, więc w niektórych przypadkach nie można ich zamienić.innerText
jest dobrze obsługiwana we wszystkich przeglądarkach. Firefox zaczął obsługiwać go od wersji 45. caniuse.com/#search=innertextinnerHTML
jest znaną podatnością na ataki XSS. To powiedziawszy,innerText
nie jest również w 100% bezpieczne. stackoverflow.com/questions/52707031/does-innertext-prevent-xss blog.cloudboost.io/…Odpowiedzi:
W przeciwieństwie do
innerText
tegoinnerHTML
pozwala pracować z tekstem sformatowanym HTML i nie koduje i nie dekoduje automatycznie. Innymi słowy,innerText
pobiera i ustawia zawartość znacznika jako zwykły tekst, podczas gdyinnerHTML
pobiera i ustawia treść w formacie HTML.źródło
Poniższe przykłady odnoszą się do następującego fragmentu kodu HTML:
Do węzła będzie odwoływał się następujący JavaScript:
element.innerHTML
Ustawia lub pobiera składnię HTML opisującą potomków elementu
Jest to część specyfikacji parsowania i serializacji DOM W3C . Uwaga: jest to właściwość
Element
obiektów.node.innerText
Ustawia lub pobiera tekst między znacznikami początkowym i końcowym obiektu
innerText
został wprowadzony przez Microsoft i przez pewien czas nie był obsługiwany przez Firefox. W sierpniu 2016 r.innerText
Został przyjęty przez WHATWG i został dodany do przeglądarki Firefox w wersji 45.innerText
zapewnia stylową reprezentację tekstu, który próbuje dopasować do tego, co renderuje przeglądarka, co oznacza:innerText
obowiązujetext-transform
iwhite-space
regulujeinnerText
przycina białe spacje między liniami i dodaje podział linii między elementamiinnerText
nie zwróci tekstu dla niewidocznych elementówinnerText
powrócitextContent
dla elementów, które nigdy nie są renderowane jak<style />
i `Node
elementównode.textContent
Pobiera lub ustawia zawartość tekstową węzła i jego potomków.
Chociaż jest to standard W3C , nie jest obsługiwany przez IE <9.
Node
elementównode.value
Ten zależy od elementu, na który celujesz. W powyższym przykładzie
x
zwraca obiekt HTMLDivElement , który nie mavalue
zdefiniowanej właściwości.<input />
Na przykład tagi wejściowe ( ) definiująvalue
właściwość , która odnosi się do „bieżącej wartości w kontrolce”.Z dokumentów :
Przykładowy skrypt
Oto przykład, który pokazuje wynik dla HTML przedstawionego powyżej:
źródło
innerText
: quirksmode.org/dom/html i quirksmode.org/dom/tests/innerhtml.htmlFirefox >=45
jest obsługiwany.innerText
jest on teraz częścią Standardu i powinien być obsługiwany przez Firefox od wersji 45; być może powód aktualizacji tej świetnej odpowiedzi @faraz<
do<
,>
do>
, itpInnerText
właściwość html-koduje zawartość, przechodząc<p>
do<p>
itp. Jeśli chcesz wstawić tagi HTML, musisz użyćInnerHTML
.źródło
W prostych słowach:
innerText
pokaże wartość taką jaka jest i ignoruje wszelkieHTML
formatowanie, które może być uwzględnione.innerHTML
pokaże wartość i zastosuje dowolneHTML
formatowanie.źródło
Aby na przykład go udoskonalić i odzyskać wartość Alec, użyj innego .childNodes [1]
źródło
Pod względem
MutationObservers
ustawienia ustawienieinnerHTML
powodujechildList
mutację z powodu usunięcia węzła przez przeglądarki, a następnie dodania nowego węzła o wartościinnerHTML
.Jeśli ustawisz
innerText
,characterData
generowana jest mutacja.źródło
Jedyną różnicą między
innerText
iinnerHTML
jest to, żeinnerText
wstawia ciąg znaków w elemencie, ainnerHTML
uruchamia go jako zawartość HTML.źródło
InnerText
zwróci tylko wartość tekstową strony z każdym elementem w nowym wierszu w postaci zwykłego tekstu, podczas gdyinnerHTML
zwróci treść HTML wszystkiego wewnątrzbody
znacznika ichildNodes
zwróci listę węzłów, jak sugeruje nazwa.źródło
innerText
Właściwość zwraca tekście wartości elementu html natomiastinnerHTML
zwracaHTML content
. Przykład poniżej:źródło
aby dodać do listy, innerText zachowa twoją transformację tekstu, innerHTML wont
źródło