使用纯JavaScript还是jQuery,以及具体的HTML结构
时间: 2024-11-06 10:15:59 浏览: 5
基于纯DOM和jQuery的简单直观组织结构图插件设计源码
根据提供的文档内容,该任务主要涉及前端开发中的DOM操作和事件处理。下面是使用纯JavaScript和jQuery实现的方法,包括建议的具体HTML结构:
### HTML 结构
假设您的页面布局如下所示:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="styles.css"> <!-- 样式文件 -->
</head>
<body>
<div class="container">
<nav id="navbar">
<ul>
<li><a href="#home" class="active">首页</a></li>
<li><a href="#message-board">留言板</a></li>
<li><a href="#about-us">关于我们</a></li>
<li><a href="#friend-links">友情链接</a></li>
</ul>
</nav>
<div id="content">
<section id="home" class="content-section active">
<p>前行的道路, 多少会有碎碎绊绊...</p>
</section>
<section id="message-board" class="content-section">
<form id="comment-form">
<textarea name="comment" placeholder="畅言一下"></textarea>
<button type="submit">发表评论</button>
</form>
<div id="comments-list">
<div class="comment">
<p class="username">匿名用户【重庆沙坪坝区】</p>
<p class="time">2019年12月16日16:46</p>
<p class="text">大佬很喜欢你的网站, 我们交换友链吧!</p>
</div>
<!-- 更多评论... -->
</div>
</section>
<section id="about-us" class="content-section">
<p>码世界: 规则简单有效, 粗暴却完美...</p>
</section>
<section id="friend-links" class="content-section">
<p>友情链接事项...</p>
</section>
</div>
</div>
<script src="script.js"></script> <!-- 脚本文件 -->
</body>
</html>
```
### 使用纯JavaScript实现
```javascript
document.addEventListener('DOMContentLoaded', function() {
// 导航栏点击事件
document.querySelectorAll('#navbar a').forEach(link => {
link.addEventListener('click', function(event) {
event.preventDefault();
const targetId = this.getAttribute('href').substring(1);
document.querySelector('.content-section.active').classList.remove('active');
document.getElementById(targetId).classList.add('active');
document.querySelectorAll('#navbar .active').forEach(item => item.classList.remove('active'));
this.classList.add('active');
});
});
// 留言板提交表单
document.getElementById('comment-form').addEventListener('submit', function(event) {
event.preventDefault();
const commentText = this.elements['comment'].value;
if (commentText.trim()) {
const newComment = createCommentElement(commentText);
document.getElementById('comments-list').prepend(newComment);
updateCommentsCount();
this.reset();
}
});
function createCommentElement(text) {
const now = new Date();
const timeStr = `${now.getFullYear()}年${now.getMonth()+1}月${now.getDate()}日${now.getHours()}:${now.getMinutes()}`;
const commentDiv = document.createElement('div');
commentDiv.className = 'comment';
const usernameP = document.createElement('p');
usernameP.className = 'username';
usernameP.textContent = `匿名用户`;
const timeP = document.createElement('p');
timeP.className = 'time';
timeP.textContent = timeStr;
const textP = document.createElement('p');
textP.className = 'text';
textP.textContent = text;
commentDiv.appendChild(usernameP);
commentDiv.appendChild(timeP);
commentDiv.appendChild(textP);
return commentDiv;
}
function updateCommentsCount() {
const commentsList = document.getElementById('comments-list');
const count = commentsList.childElementCount;
document.querySelector('.comments-count').textContent = `${count}条评论`;
}
});
```
### 使用jQuery实现
如果您偏好使用jQuery,可以参考以下代码:
```html
<!-- 在HTML头部引入jQuery -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
```
```javascript
$(document).ready(function() {
// 导航栏点击事件
$('#navbar a').on('click', function(event) {
event.preventDefault();
var targetId = $(this).attr('href').substring(1);
$('.content-section.active').removeClass('active');
$('#' + targetId).addClass('active');
$('#navbar .active').removeClass('active');
$(this).addClass('active');
});
// 留言板提交表单
$('#comment-form').on('submit', function(event) {
event.preventDefault();
var commentText = $(this).find('[name=comment]').val().trim();
if (commentText) {
var newComment = createCommentElement(commentText);
$('#comments-list').prepend(newComment);
updateCommentsCount();
$(this)[0].reset();
}
});
function createCommentElement(text) {
var now = new Date();
var timeStr = `${now.getFullYear()}年${now.getMonth()+1}月${now.getDate()}日${now.getHours()}:${now.getMinutes()}`;
var commentDiv = $('<div>', {class: 'comment'});
commentDiv.append($('<p>', {class: 'username', text: '匿名用户'}));
commentDiv.append($('<p>', {class: 'time', text: timeStr}));
commentDiv.append($('<p>', {class: 'text', text: text}));
return commentDiv;
}
function updateCommentsCount() {
var count = $('#comments-list > .comment').length;
$('.comments-count').text(`${count}条评论`);
}
});
```
这两种方法都可以实现所需的功能。选择哪种方法取决于您个人的技术偏好和项目需求。
阅读全文