Github Education
  • Github學生免費服務推薦
  • name.com免費網域申請
  • SendGrid - Email Service
  • Configcat - Global config setting
  • Transloadit - File conversion to cloud storage
  • i18n 管理平台 - lingohub
  • Push Notifications - PushBots
  • BrowserStack
  • Page
  • Ai
    • Stable diffusion
    • Changing Images Backgrounds
  • Copy of Crypto currency games
    • Gods Unchained
  • Digital Ocean
    • How to create cloud instance and access it on Digital Ocean
    • Deploy nodeJs on DigitalOcean droplet using docker
    • Deploy Redis to your local
  • Heroku
    • Heroku Cli
    • How to deploy Hello world to Heroku using docker
    • How to deploy NodeJS application to Heroku using docker
  • APIs
    • Google Geocoding API
    • FourSquare
    • Building APIs with Swagger
  • Util
    • Google Cloud Storage - Object storage
    • Google Search Console
    • Google Sign-in with Angular Front End
    • Google Sign-in with Nodejs Backend
    • Github Package
  • 推薦課程
  • Currently interested in
  • Useful info
  • Become a Front End Web Developer | Udacity
    • 2. CSS, Website Layout, Website Components
      • Lesson 2: CSS
      • Lesson 3: Flexbox
      • Lesson 4: CSS Grid
      • Lesson 5: Creating Responsive Layouts
      • How to use Adobe Design tokens - Spectrum
    • 3. Javascript & The DOM
      • Lesson 1: Syntax
      • Lesson 2: The Document Object Model
      • Lesson 3: Creating Content with JavaScript
      • Lesson 4: Working with Browser Events
  • Some tips
    • Github Blame View
  • Free
    • Openshift(WIP)
Powered by GitBook
On this page
  • Update Existing Page Content
  • 1. Update an Element's Inner HTML
  • 2. Update an Element's Text Content
  • 3. An Element's Text Content - Version 2!
  • Add New Page Content
  • 1. Adding Content To The Page
  • 2. Creating Text Nodes
  • 3. Inserting HTML In Other Locations

Was this helpful?

  1. Become a Front End Web Developer | Udacity
  2. 3. Javascript & The DOM

Lesson 2: The Document Object Model

Update Existing Page Content

1. Update an Element's Inner HTML

顯示某個element底下的html

The .innerHTML property sets or returns the HTML content inside the selected element (i.e. between the tags).

document.querySelector('.card').innerHTML

There's also the rarely used .outerHTML property. .outerHTML represents the HTML element itself, as well as its children.

<h1 id="pick-me">Greetings To <span>All</span>!</h1>

const innerResults = document.querySelector('#pick-me').innerHTML;
console.log(innerResults); // logs the string: "Greetings To <span>All</span>!"

const outerResults = document.querySelector('#pick-me').outerHTML;
console.log(outerResults); // logs the string: "<h1 id="pick-me">Greetings To <span>All</span>!</h1>"

更新innerHTML

myElement.innerHTML = 'The <strong>Greatest</strong> Ice Cream Flavors';

2. Update an Element's Text Content

So .innerHTML will get/set an element's HTML content. If we just want the text content, we can use the fantastically named .textContent property!

The .textContent property will:

  • set the text content of an element and all its descendants

  • return the text content of an element and all its descendants

更新內容:

nanodegreeCard.textContent = "I will be the updated text for the nanodegreeCard element!";

textContent會把內容當作plain text輸出,而innerHTML則會parse內文的html tag。

3. An Element's Text Content - Version 2!

.innerText will get the visible text of the element. If CSS is used to hide any text inside that element, .innerText will not return that text, while .textContent will return it.

innerText顯示apply css之後的文字,而textContent則回傳apply css之前的文字。

Add New Page Content

之前為修改現有element,現在為新增element。

1. Adding Content To The Page

As you've already discovered, the .createElement() method is a method on the document object:

// creates and returns a <span> element
document.createElement('span');

// creates and returns an <h3> element
document.createElement('h3');

createElement只是建立新增的element,針對想要新增的element target呼叫appendChild才會新增element上去:

// create a brand new <span> element
const newSpan = document.createElement('span');

// select the first (main) heading of the page
const mainHeading = document.querySelector('h1');

// add the <span> element as the last child element of the main heading
mainHeading.appendChild(newSpan);

.appendChild() Needs An Element!

This is stated above, but I wanted to call this out, specifically. When you're using the .appendChild() method, it must be called on an existing element. To be clear, you can't call this on the document object, so the following will result in an error:

const newSpan = document.createElement('span');

// causes an error
document.appendChild(newSpan);

2. Creating Text Nodes

第二種方式則是產生內文後,再添加到element,多一個步驟:

  • creates a paragraph element

  • creates a text node

  • appends the text node to the paragraph

  • appends the paragraph to the tag

const myPara = document.createElement('p');
const textOfParagraph = document.createTextNode('I am the text for the paragraph!');

myPara.appendChild(textOfParagraph);
document.body.appendChild(myPara);

用以下的方式產生一樣的結果:

const myPara = document.createElement('p');

myPara.textContent = 'I am the text for the paragraph!';
document.body.appendChild(myPara);

如果將同一個element多次appendChild給不同element,則只會append到最後一個指定的element。

3. Inserting HTML In Other Locations

問題:appendChild只能插入parent的child的最後一個位置。

解法:.insertAdjacentHTML()

Enter the .insertAdjacentHTML() method! The .insertAdjacentHTML() method has to be called with two arguments:

  • the location of the HTML

  • the HTML text that is going to be inserted

The first argument to this method will let us insert the new HTML in one of four different locations

  • beforebegin – inserts the HTML text as a previous sibling

  • afterbegin – inserts the HTML text as the first child

  • beforeend – inserts the HTML text as the last child

  • afterend – inserts the HTML text as a following sibling

<!-- beforebegin -->
<p>
    <!-- afterbegin -->
    Existing text/HTML content
    <!-- beforeend -->
</p>
<!-- afterend -->

PreviousLesson 1: SyntaxNextLesson 3: Creating Content with JavaScript

Last updated 5 years ago

Was this helpful?

Check out the .textContent's documentation page on MDN:

textContent docs
https://developer.mozilla.org/en-US/docs/Web/API/Document
https://developer.mozilla.org/en-US/docs/Web/API/Node
https://developer.mozilla.org/en-US/docs/Web/API/Element