[想试试看JavaScript ] HTML DOM

我们知道写程序有个阶段就是一个输入、运算处理、输出
网页是由HTML、CSS、Javascript三个语言所组成
HTML 装着要呈现在网页上的资料,例如:文字、图片
CSS 可以修改资料的样式,例如:修改文字颜色、修改图片大小、一些网页动画
Javascript 可以对网页做动态地修改,例如:点击按钮将商品加入购物车、更客制化的网页动画

其中 Javascript 就会有很多运算的部分需要学习。
通常 HTML、CSS 都是写死的,也就是一开始就要设定好,按到网页的哪颗按纽,就会发生什麽事情。
而 Javascript 就可以比较有弹性,例如可以根据使用者点了哪个商品,就将那个商品加入购物车。
加入购物车这个功能,其实就是自动侦测我们点了那些商品,并且自动在网页的购物车页面画出我们点了什麽商品。
所以购物车页面,并不是写死的,而是透过 Javascript 自动在网页上画出来的。

那麽 Javascript 要如何自动修改网页、在网页上自己画东西出来呢?

可以透过 HTML DOM 来修改网页。

DOM ( Document Object Model)

DOM(Document Object Model,文件物件模型),就是将 HTML 以树状结构来表现的模型,组合起来的树状图,我们称之为「DOM Tree」

听起来很复杂,可以把他当作类似物件的东西。因为网页里面包含了很多复杂的资料,所以我们只要使用 DOM 里面提供的方法(也就是函式),就可以更改网页的资料。
用起来的感觉就像这样

window.document.body.innerHTML="Hello World";

这个指令可以将网页全部的画面改成 "Hello World"
这个指令就是使用 innerHTML 这个方法将资料"Hello World"放进 document.body 这个地方
感觉就像我们使用方法修改了 document.body 这个物件。

那来一个简单的练习
可以使用其他编译器来练习,或者使用JS Bin这个网站
https://jsbin.com/

准备一个 HTML 档案,使用 button 标签写一个按纽叫做 Change

<html>
<head>
<script>
    
</script>
</head>
<body>
 <button>Change</button>
</body>
</html>

接着我希望在我点击这个按钮就可以对网页做一些修改,我希望点下这个按钮之後就可以启动函式。

我准备一个 change 函式

<html>
<head>
<script>
    function change(){
        window.document.body.innerHTML="Hello World";
    }
</script>
</head>
<body>
 <button>Change</button>
</body>
</html>

我想修改的地方是 window.document.body
我修改的方法是 innerHTML
我要放的值是 "Hello World"
执行这个程序码後,网页画面就会变成 "Hello World"

那麽我们希望按下按钮後就启动函式,我们需要使用「事件处理」
在 button 标签,建立一个 click 事件
<button onclick="change();">Change</button>

<html>
<head>
<script>
    function change(){
        window.document.body.innerHTML="Hello World";
    }
</script>
</head>
<body>
 <button onclick="change();">Change</button>
</body>
</html>

这样就设定好了可以再按下按纽时启动 change() 函式
这样我们在网页中按下 button 标签,也就是 change 按钮,画面就会变成 Hello World

另一个范例

<html>
<head>
<script>
    function change(){
        
    }
</script>
</head>
<body>
 <div>
     Today is good day.
 </div>
 <button onclick="change();">Change</button>
</body>
</html>

现在我有一段文字 Today is good day.
我希望按下按钮後,可以替换里面的文字,将 good 替换成 bad。

我可以用一个标签将我想替换的范围包围起来
并且给这段标签加上 id 属性,给一个值 word
Today is <span id="word">good</span> day.

<html>
<head>
<script>
    function change(){
        
    }
</script>
</head>
<body>
 <div>
     Today is <span id="word">good</span> day.
 </div>
 <button onclick="change();">Change</button>
</body>
</html>

接着我就可以用 HTML DOM 提供的方法,去选取到我想修改的地方
我使用 document.getElementById() 方法,将 id 的值当作参数放进去
就会选取到我想修改的地方
我将我选取到的标签放进变数里

var target=window.document.getElementById("word");

接着我就可以使用 innerHTML 修改文字内容,将 good 替换成 bad

target.innerHTML="bad";

整段程序码看起来就会像这样

<html>
<head>
<script>
    function change(){
        var target=window.document.getElementById("word"); // 使用 id word 获取 span 标签
        target.innerHTML="bad"; // 修改 span 标签内文
    }
</script>
</head>
<body>
 <div>
     Today is <span id="word">good</span> day.
 </div>
 <button onclick="change();">Change</button>
</body>
</html>

<<:  InnoDB的表格空间-Part2(各类型页面详细情况)

>>:  Day15 负载均衡

Day04:团队的组成

当要开发一个大型专案的时候,往往会落入一个错误的认知,就是认为投入的人数越多,开发越快。 软件开发需...

【Day 21】Hook 04:useContext

useContext useContext 本质上是 Context 的语法糖, 精简了 Conte...

8.移转 Aras PLM大小事-料号版本

第8话-料号版本 讲起版本这件事,肯定每间公司的进版规则都不一样 甚至是明明同一间公司,但在各地区(...

Day 15 「一切皆空」单元测试、Code Smell 与重构 - Null 篇

一切皆空,影片来源:YouTube 一般人以为佛教说的空,,等於什麽都没有,是消极并悲观的,其实不...

Day 27 - 实战演练 — Tabs

想先看 Code 或是 Demo 的由此去 Github Repo: ithelp-ui-demo...