Próbowałem tego, ale pokazuję „undefined”.
function test() {
var t = document.getElementById('superman').value;
alert(t); }
Czy istnieje sposób, aby uzyskać wartość za pomocą prostego JavaScript no jQuery Please!
Odpowiedzi:
Prawdopodobnie będziesz chciał spróbować textContent
zamiast innerHTML
.
Podane innerHTML
zwróci zawartość DOM jako, String
a nie wyłącznie „tekst” w div
. W porządku, jeśli wiesz, że twój div
zawiera tylko tekst, ale nie jest odpowiedni w każdym przypadku użycia. W takich przypadkach prawdopodobnie będziesz musiał użyć textContent
zamiastinnerHTML
Na przykład, biorąc pod uwagę następujące znaczniki:
<div id="test">
Some <span class="foo">sample</span> text.
</div>
Otrzymasz następujący wynik:
var node = document.getElementById('test'),
htmlContent = node.innerHTML,
// htmlContent = "Some <span class="foo">sample</span> text."
textContent = node.textContent;
// textContent = "Some sample text."
Więcej informacji w MDN:
innerHTML
nie zwraca tylko treści tekstowej zgodnie z żądaniem w pytaniu. Wdrożyłbym rozwiązanie oparte na .textContent
wykrywaniu funkcji z rezerwą dla <IE9
Możesz użyć innerHTML
(a następnie przeanalizować tekst z HTML) lub użyć innerText
.
let textContentWithHTMLTags = document.querySelector('div').innerHTML;
let textContent = document.querySelector('div').innerText;
console.log(textContentWithHTMLTags, textContent);
innerHTML
i innerText
jest obsługiwany przez wszystkie przeglądarki (z wyjątkiem FireFox <44), w tym IE6 .
Właściwie nie musisz wywoływać document.getElementById()
funkcji, aby uzyskać dostęp do swojego div
.
Możesz tego użyć object
bezpośrednio przez id
:
text = test.textContent || test.innerText;
alert(text);
.textContent
nie jest obsługiwany w IE8 i niższych, co sprawia, że jest nieco trudny w użyciu.