Mam przycisk 1 i trochę tekstu w moim HTML, jak poniżej:
function get_content(){
// I don't know how to do in here!!!
}
<input type="button" onclick="get_content()" value="Get Content"/>
<p id='txt'>
<span class="A">I am</span>
<span class="B">working in </span>
<span class="C">ABC company.</span>
</p>
Gdy użytkownik kliknie przycisk, zawartość w <p id='txt'>
pliku stanie się następującym oczekiwanym wynikiem:
<p id='txt'>
// All the HTML element within the <p> will be disappear
I am working in ABC company.
</p>
Czy ktoś może mi pomóc, jak napisać funkcję JavaScript?
Dziękuję Ci.
javascript
html
Jan
źródło
źródło
Odpowiedzi:
[2017-07-25] Ponieważ jest to nadal akceptowana odpowiedź, mimo że jest to bardzo hakerskie rozwiązanie, włączam do niego kod Gabi , zostawiając swój własny, aby służyć jako zły przykład.
źródło
Możesz użyć tego:
W zależności od potrzeb możesz użyć opcji
element.innerText
lubelement.textContent
. Różnią się na wiele sposobów.innerText
próbuje w przybliżeniu oszacować, co by się stało, gdybyś wybrał to, co widzisz (wyrenderowany html) i skopiował to do schowka, podczas gdytextContent
po prostu usuwa tagi HTML i daje ci to, co zostało.innerText
ma również kompatybilność ze starymi przeglądarkami IE (stamtąd).źródło
text
metody o wysokiej wydajności , ponieważ robi się dużo w pętli. jQuery nie był wystarczająco wydajny, ale był bardzo szybki. Pracował w IE8 +, chrome, ff. Idealny.el.textContent
będzieundefined
iel.innerText
może być""
. Ale"" || undefined
jestundefined
. Używanieel.innerText || el.textContent || ''
może być lepsze.el.textContent || el.innerText || ""
.var text = element.textContent;
; chyba że z jakiegoś bezbożnego powodu nadal musisz wspierać IE8 lub starsze .el.innerText
jest mniej więcej taki sam jakel.textContent.replace(/\W+/g, ' ')
. One nie są takie same.Jeśli możesz użyć jquery, to jest to proste
źródło
filter
własność wiem, że czysty JS jest technicznie bardziej efektywne, jeśli chodzi o szybkość, ale to nie ma znaczenia już w najbardziej normalne ...document.querySelector("#txt").innerText;
ludzie zbyt często dołączają całą bibliotekę jQuery, gdy ich jedyną potrzebą jest kilka linii kodu. To zła praktyka.Ta odpowiedź będzie działać, aby uzyskać tylko tekst dla dowolnego elementu HTML.
Ten pierwszy parametr „węzeł” jest elementem, z którego ma zostać pobrany tekst. Drugi parametr jest opcjonalny i jeśli true doda spację między tekstem w elementach, jeśli w przeciwnym razie nie byłoby tam spacji.
źródło
W zależności od potrzeb możesz użyć opcji
element.innerText
lubelement.textContent
. Różnią się na wiele sposobów.innerText
próbuje w przybliżeniu oszacować, co by się stało, gdybyś wybrał to, co widzisz (wyrenderowany html) i skopiował to do schowka, podczas gdytextContent
po prostu usuwa tagi HTML i daje ci to, co zostało.innerText
jest już używany nie tylko dla IE i jest obsługiwany we wszystkich głównych przeglądarkach . Oczywiście w przeciwieństwie dotextContent
tego ma kompatybilność ze starymi przeglądarkami IE (od kiedy to wymyślili).Pełny przykład (z odpowiedzi Gabi ):
źródło
To działa dla mnie skompilowane na podstawie tego, co zostało tutaj powiedziane, z bardziej nowoczesnym standardem. Działa to najlepiej w przypadku wielu wyszukiwań.
źródło
To powinno działać:
Spróbuj tego skrzypiec: http://jsfiddle.net/7gnyc/2/
źródło
Że należy to zrobić.
źródło
Spróbuj (krótka wersja pomysłu na odpowiedź Gabi )
Pokaż fragment kodu
źródło
Chcesz zmienić
I am working in ABC company.
TOI am working in ABC company.
. To są te same ciągi, więc nie widzę powodu, aby to zrobić, ale możesz to zrobić za pomocą JavaScriptinnerHTML
lubtextContent
.element.innerHTML
to właściwość definiująca kod HTML wewnątrz elementu. Jeśli wpiszeszelement.innerHTML = "<strong>This is bold</strong>
, tekst „To jest pogrubiony” zostanie pogrubiony.element.textContent
z drugiej strony ustawia tekst w elemencie. Jeśli użyjeszelement.textContent = "<strong>This is bold</strong>
, tekst „To jest pogrubione” nie będzie pogrubiony. Użytkownik dosłownie zobaczy tekst „ To jest pogrubioneW twoim przypadku możesz użyć jednego z nich. Użyję
.textContent
. Kod do zmiany<p>
elementu znajduje się poniżej.To niestety nie zmieni tego, ponieważ zmieni to na ten sam dokładny tekst. Możesz zaryzykować, zmieniając napis „Pracuję w firmie ABC”. na coś innego.
źródło