
- Dart程式設計教程
- Dart程式設計 - 首頁
- Dart程式設計 - 概述
- Dart程式設計 - 環境搭建
- Dart程式設計 - 語法
- Dart程式設計 - 資料型別
- Dart程式設計 - 變數
- Dart程式設計 - 運算子
- Dart程式設計 - 迴圈
- Dart程式設計 - 決策語句
- Dart程式設計 - 數字
- Dart程式設計 - 字串
- Dart程式設計 - 布林值
- Dart程式設計 - 列表
- Dart程式設計 - 列表
- Dart程式設計 - 對映
- Dart程式設計 - 符號
- Dart程式設計 - Rune (字元碼)
- Dart程式設計 - 列舉
- Dart程式設計 - 函式
- Dart程式設計 - 介面
- Dart程式設計 - 類
- Dart程式設計 - 物件
- Dart程式設計 - 集合
- Dart程式設計 - 泛型
- Dart程式設計 - 包
- Dart程式設計 - 異常處理
- Dart程式設計 - 除錯
- Dart程式設計 - Typedef (型別定義)
- Dart程式設計 - 庫
- Dart程式設計 - 非同步程式設計
- Dart程式設計 - 併發
- Dart程式設計 - 單元測試
- Dart程式設計 - HTML DOM
- Dart程式設計實用資源
- Dart程式設計 - 快速指南
- Dart程式設計 - 資源
- Dart程式設計 - 討論
Dart程式設計 - HTML DOM
每個網頁都位於瀏覽器視窗內,瀏覽器視窗可以被視為一個物件。
一個文件物件代表顯示在視窗中的HTML文件。文件物件具有各種屬性,這些屬性引用其他物件,允許訪問和修改文件內容。
訪問和修改文件內容的方式稱為文件物件模型,或DOM。物件以層次結構組織。這種層次結構適用於Web文件中物件的組織。
視窗 - 層次結構的頂部。它是物件層次結構的最外層元素。
文件 - 載入到視窗中的每個HTML文件都成為一個文件物件。文件包含頁面的內容。
元素 - 代表網頁上的內容。例如文字框、頁面標題等。
節點 - 通常是元素,但它們也可以是屬性、文字、註釋和其他DOM型別。
以下是一些重要DOM物件的簡單層次結構:

Dart提供dart:html庫來操作DOM中的物件和元素。基於控制檯的應用程式無法使用dart:html庫。要在Web應用程式中使用HTML庫,請匯入dart:html:
import 'dart:html';
接下來,我們將討論下一節中的一些DOM操作。
查詢DOM元素
dart:html庫提供querySelector函式來搜尋DOM中的元素。
Element querySelector(String selectors);
querySelector()函式返回與指定選擇器組匹配的第一個元素。“選擇器”應使用CSS選擇器語法,如下所示
var element1 = document.querySelector('.className'); var element2 = document.querySelector('#id');
示例:操作DOM
請按照Webstorm IDE中的以下步驟操作:
步驟1 - 檔案 -> 新建專案 -> 在位置處,將專案名稱設定為DemoWebApp。

步驟1 - 在“生成示例內容”部分,選擇SimpleWebApplication。

這將建立一個示例專案DemoWebApp。其中包含一個pubspec.yaml檔案,其中包含需要下載的依賴項。
name: 'DemoWebApp' version: 0.0.1 description: An absolute bare-bones web app. #author: Your Name <email@example.com> #homepage: https://www.example.com environment: sdk: '>=1.0.0 <2.0.0' dependencies: browser: '>=0.10.0 <0.11.0' dart_to_js_script_rewriter: '^1.0.1' transformers: - dart_to_js_script_rewriter
如果已連線到網路,則這些依賴項將自動下載,否則可以右鍵單擊pubspec.yaml並獲取依賴項。

在web資料夾中,您將找到三個檔案:index.html、main.dart和style.css
index.html
<!DOCTYPE html> <html> <head> <meta charset = "utf-8"> <meta http-equiv = "X-UA-Compatible" content = "IE = edge"> <meta name = "viewport" content = "width = device-width, initial-scale = 1.0"> <meta name = "scaffolded-by" content = "https://github.com/google/stagehand"> <title>DemoWebApp</title> <link rel = "stylesheet" href = "styles.css"> <script defer src = "main.dart" type = "application/dart"></script> <script defer src = "packages/browser/dart.js"></script> </head> <body> <h1> <div id = "output"></div> </h1> </body> </html>
main.dart
import 'dart:html'; void main() { querySelector('#output').text = 'Your Dart web dom app is running!!!.'; }
執行index.html檔案;您將在螢幕上看到以下輸出。

事件處理
dart:html庫為DOM元素提供了onClick事件。語法顯示元素如何處理點選事件流。
querySelector('#Id').onClick.listen(eventHanlderFunction);
querySelector()函式從給定的DOM返回元素,而onClick.listen()將採用一個eventHandler方法,該方法將在引發點選事件時被呼叫。eventHandler的語法如下:
void eventHanlderFunction (MouseEvent event){ }
現在讓我們來看一個例子來理解Dart中事件處理的概念。
TestEvent.html
<!DOCTYPE html> <html> <head> <meta charset = "utf-8"> <meta http-equiv = "X-UA-Compatible" content = "IE = edge"> <meta name = "viewport" content = "width = device-width, initial-scale = 1.0"> <meta name = "scaffolded-by" content ="https://github.com/google/stagehand"> <title>DemoWebApp</title> <link rel = "stylesheet" href = "styles.css"> <script defer src = "TestEvent.dart" type="application/dart"></script> <script defer src = "packages/browser/dart.js"></script> </head> <body> <div id = "output"></div> <h1> <div> Enter you name : <input type = "text" id = "txtName"> <input type = "button" id = "btnWish" value="Wish"> </div> </h1> <h2 id = "display"></h2> </body> </html>
TestEvent.dart
import 'dart:html'; void main() { querySelector('#btnWish').onClick.listen(wishHandler); } void wishHandler(MouseEvent event){ String name = (querySelector('#txtName') as InputElement).value; querySelector('#display').text = 'Hello Mr.'+ name; }
輸出
