
Re:从零开始的markdown编辑器-1-同步输入
1. 同步输入
效果展示
知识补充
flex
事件监听器 (addEventListener
)
作用:
向指定元素添加事件监听器
基本语法
1
element.addEventListener(event, function, useCapture);
参数解释
- element: 添加事件监听器的 DOM 元素
- event: 监听的事件类型, 如
"click"
、"mouseover"
、"keydown"
- function: 当事件发生时调用的函数
- useCapture (可选): 布尔值, 指定事件是否在捕获或冒泡阶段执行, 遇到例子时再解释
GetelementBy
箭头函数
作用
更简洁的函数语法
基本语法
箭头函数用
=>
定义函数体1
2
3const func = (param) => {
// 函数体
}- 只有一个参数的时候可省略括号
- 函数体 只有一条语句且直接返回时可省略大括号和
return
实现思路
1. HTML
需要输入区和输出区 用两个 div
表示
输入区
1
2
3<div class="input">
<textarea id="input"></textarea>
</div>输出区
1
2
3<div class="output">
<div id="output"></div>
</div>
方便布局 嵌套在一个 container
中
1 |
|
2. CSS
先整体进行初步的处理
1
2
3
4
5* {
margin: 0;
padding: 0;
box-sizing: border-box;
}我们初步采用左右对照的方式
父元素使用
flex
1
2
3.container {
display: flex;
}子元素设置相同权重, 并添加外边距
margin
进行美化1
2
3
4
5
6
7
8.input {
flex: 1;
margin: 16px;
}
.output {
flex: 1;
margin: 16px;
}
3. JS
先通过
Id
定位到输入和输出的部分1
2const input = document.getElementById('input');
const output = document.getElementById('output');使用
input
事件监听textarea
的内容变化, 并同步到输出框的内容1
2
3input.addEventListener('input', (event) => {
output.textContent = input.value;
});为后续格式的显示, 将
textContent
改为innerHTML
1
2
3input.addEventListener('input', (event) => {
output.innerHTML = input.value;
});保证页面
DOM
完整加载解析后再进行上述行为将上述代码嵌套在
DOMContentLoaded
事件的回调函数中1
2
3
4
5
6
7
8document.addEventListener('DOMContentLoaded', (event) => {
const input = document.getElementById('input');
const output = document.getElementById('output');
// 使用 input 事件监听 textarea 的内容变化
input.addEventListener('input', (event) => {
output.innerHTML = input.value;
});
});
区别体现:
使用
textContent
使用
innerHTML
(此处有两个彩蛋哦)
尝试复制分别输入以下内容来观察区别吧
1 |
|
1 |
|
代码展示
项目结构:
- index.html
- css
- index.css
- js
- index.js
index.html
1 |
|
index.css
1 |
|
index.js
1 |
|