前端开发中的JavaScript进阶应用:从文本高亮到Ajax请求
立即解锁
发布时间: 2025-08-19 00:12:31 阅读量: 1 订阅数: 3 


JavaScript核心编程与实践
# 前端开发中的 JavaScript 进阶应用:从文本高亮到 Ajax 请求
## 1. 文本高亮与移除高亮
在前端开发中,我们经常需要对页面上的特定文本进行高亮显示,以突出显示某些关键信息。下面是实现文本高亮和移除高亮的具体步骤和代码示例。
### 1.1 高亮包含特定文本的段落
我们可以使用 JavaScript 来实现对包含特定文本的段落进行高亮显示。以下是实现该功能的代码:
```javascript
function highlightParas(containing) {
containing = new RegExp(`\\b${containing}\\b`, 'i');
let paras = document.getElementsByTagName('p');
console.log(paras);
for(let p of paras) {
if(!containing.test(p.textContent)) continue;
p.classList.add('highlight');
}
}
highlightParas('unique');
```
上述代码的具体步骤如下:
1. **创建正则表达式**:使用 `RegExp` 构造函数创建一个不区分大小写的正则表达式,用于匹配包含特定文本的段落。
2. **获取所有段落元素**:使用 `document.getElementsByTagName('p')` 获取页面上的所有段落元素。
3. **遍历段落元素**:使用 `for...of` 循环遍历所有段落元素,检查每个段落的文本内容是否包含特定文本。
4. **添加高亮类**:如果段落的文本内容包含特定文本,则使用 `classList.add('highlight')` 为该段落添加 `highlight` 类。
### 1.2 移除高亮
如果需要移除高亮效果,可以使用以下代码:
```javascript
function removeParaHighlights() {
let paras = document.querySelectorAll('p.highlight');
for(let p of paras) {
p.classList.remove('highlight');
}
}
```
上述代码的具体步骤如下:
1. **获取所有高亮段落元素**:使用 `document.querySelectorAll('p.highlight')` 获取页面上所有具有 `highlight` 类的段落元素。
2. **遍历高亮段落元素**:使用 `for...of` 循环遍历所有高亮段落元素。
3. **移除高亮类**:使用 `classList.remove('highlight')` 为每个高亮段落元素移除 `highlight` 类。
### 1.3 数据属性的使用
HTML5 引入了数据属性,允许我们向 HTML 元素添加任意数据。这些数据不会被浏览器渲染,但可以通过 JavaScript 轻松读取和修改。以下是使用数据属性的示例:
```html
<button data-action="highlight" data-containing="unique">
Highlight paragraphs containing "unique"
</button>
<button data-action="removeHighlights">
Remove highlights
</button>
```
我们可以使用 `document.querySelectorAll` 来查找所有具有特定数据属性的元素:
```javascript
let highlightActions = document.querySelectorAll('[data-action="highlight"]');
```
上述代码的具体步骤如下:
1. **添加数据属性**:在 HTML 元素中添加 `data-action` 和 `data-containing` 等数据属性。
2. **查找具有特定数据属性的元素**:使用 `document.querySelectorAll` 查找所有具有 `data-action="highlight"` 的元素。
我们还可以使用 JavaScript 修改或添加数据属性:
```javascript
highlightActions[0].dataset.containing = "giraffe";
highlightActions[0].dataset.caseSensitive = "true";
```
上述代码的具体步骤如下:
1. **修改数据属性**:使用 `dataset` 属性修改元素的数据属性值。
2. **添加数据属性**:使用 `dataset` 属性添加新的数据属性。
### 1.4 事件处理
在前端开发中,事件处理是非常重要的一部分。我们可以使用 `addEventListener` 方法为元素添加事件监听器。以下是使用 `click` 事件实现文本高亮和移除高亮的代码示例:
```javascript
let highlightActions = document.querySelectorAll('[data-action="highlight"]');
for(let a of highlightActions) {
a.addEventListener('click', evt => {
evt.preventDefault();
highlightParas(a.dataset.containing);
});
}
let removeHighlightActions = document.querySelectorAll('[data-action="removeHighlights"]');
for(let a of removeHighlightActions) {
a.addEventListener('click', evt => {
evt.preventDefault();
removeParaHighlights();
});
}
```
上述代码的具体步骤如下:
1. **查找具有特定数据属性的元素**:使用 `document.querySelectorAll` 查找所有具有 `data-action="highlight"` 和 `data-action="removeHighlights"` 的元素。
2. **添加事件监听器**:使用 `addEventListener` 为每个元素添加 `click` 事件监听器。
3. **阻止默认行为**:在事件处理函数中,使用 `evt.preventDefault()` 阻止事件的默认行为。
4. **执行相应操作**:根据元素的数据属性值,调用 `highlightParas` 或 `removeParaHighlights` 函数。
### 1.5 事件捕获和冒泡
由于 HTML 是分层结构的,事件可以在多个地方被处理。事件捕获和冒泡是两种不同的事件传播方式。
#### 1.5.1 事件捕获
事件捕获是从最外层的祖先元素开始,逐步向下传递到目标元素。例如,如果我们点击一个按钮,事件将从 `<body>` 元素开始,依次经过按钮的父元素,最终到达按钮本身。
#### 1.5.2 事件冒泡
事件冒泡是从目标元素开始,逐步向上传递到最外层的祖先元素。例如,如果我们点击一个按钮,事件将从按钮本身开始,依次经过按钮的父元素,最终到达 `<body>` 元素。
#### 1.5.3 事件处理函数的控制
任何事件处理函数都可以选择执行以下三种操作之一,以影响其他事件处理函数的调用:
- **`preventDefault()`**:取消事件的默认行为,但事件仍然会继续传播。
- **`stopPropagation()`**:阻止事件继续传播,即事件不会再传递给其他元素。
- **`stopImmediatePropagation()`**:立即停止事件的传播,即事件不会再传递给其他元素,并且当前元素上的其他事件处理函数也不会再被调用。
以下是一个演示事件捕获和冒泡的示例代码:
```html
<!doctype html>
<html>
<head>
<title>Event Propogation</title>
<meta charset="utf-8">
</head>
<body>
<div>
<button>Click Me!</button>
</div>
<script>
function logEvent(handlerName, type, cancel, stop, stopImmediate) {
return function(evt) {
if(cancel) evt.preventDefau
```
0
0
复制全文
相关推荐










