2016-03-22 17 views
0

Ich versuche, einige Schlüsselkonzepte der DOM-Traversal mit Vanille-Javascript und nur im Allgemeinen versuchen, meinen Kopf um einige grundlegende Konzepte ive meist übersprungen ... Es gibt ein paar Konzepte, die ich bin nicht ganz verständnisvoll.Abrufen von Inhalt eines Knotens mit innerHTML und Vanille JS

, wenn wir eine einfache HTML-Seite nehmen:

<html> 
<head> 
<title>hello</title> 
</head> 
</html> 

auf meine Denkweise sollte ich in der Lage sein, um die Zeichenfolge „Hallo“ mit dem folgenden abzurufen: diese

window.document.head.title.innerHTML; 

jedoch gerade Rückkehr eine leere Zeichenfolge. Kann mir jemand erklären warum?

+1

leere Zeichenfolge oder 'undefined'? Warum erwarten Sie, den Titelinhalt mit dieser Codezeile abzurufen? – Hacketo

+2

Mögliches Duplikat von [Wie bekomme ich den Titel einer HTML-Seite mit JavaScript?] (Http://stackoverflow.com/questions/1057059/how-to-get-the-title-of-html-page-with-javascript) – Craicerjack

+0

Wenn Sie etwas wie "document.body.div.innerHTML" tun, können Sie sehen, warum diese ganze Sache zusammenbricht, wenn es mehr als ein div gibt. Dies bedeutet, dass Sie einen querySelector verwenden sollten, um zu erhalten, was Sie brauchen. – apokryfos

Antwort

4

Es gibt mehrere Möglichkeiten für den Zugriff auf den Seitentitel, einige von WHI zu erhalten ch finden Sie unten:

// search for the node 
document.querySelectorAll('title')[0].innerHTML 
// with html5 
document.querySelector('title').innerHTML 
// get by tag name 
document.getElementsByTagName('title')[0].innerHTML 
// or simply use this 
document.title 

Sie können nicht einfach den Namen eines bestimmten Tag schreiben und erwarten, dass das gewünschte Ergebnis zu erhalten. Nur weil es nur ein einziges <title> Tag auf der gesamten Seite gibt, bedeutet das nicht, dass dies eine praktikable Möglichkeit ist, auf einen Knoten zuzugreifen. Es gibt einige Spezialfälle wie document.head, document.body und document.title, die sich immer auf bestimmte Elemente beziehen. Sie folgen nicht notwendigerweise der DOM-Struktur in der Weise, wie Sie es von ihnen erwarten.

+2

Was macht das 'apply' Zeug dort? Außerdem fragt OP, warum sein Ansatz eine leere Zeichenfolge zurückgibt. – Bergi

+0

@Bergi, sorry, mein Schlechter. Ich habe das Anwendungsmaterial entfernt, da das OP nicht danach ist. Sie können jedoch nützlich sein, wenn Sie unterwegs den Titel ändern möchten. – AryKay

0

Das ist, weil es nur document.title

bearbeiten ist: Erklärung. Das liegt daran, dass .title den Titel eines Elements zurückgibt, Sie versuchen, die .title Attribut des head Element zurückzukehren, die Sie nie eine so gab es einen leeren String

<head title="head title"></head> 

so wird document.head.title Kopf zurückkehren Titel

+2

OP fragt, warum sein Ansatz eine leere Zeichenfolge zurückgibt. – Bergi

+0

Ich habe meine Antwort geändert. –

1
document.querySelector('title').innerHTML 

Dies ist der richtige Weg, um den Text des Titels

+1

OP fragt, warum sein Ansatz eine leere Zeichenfolge zurückgibt. – Bergi

Verwandte Themen