2024-08-19



// 假设我们有一个简单的表单,包含一个输入框和一个提交按钮
// 输入框使用了HTML5的"email"类型,以及自定义的"constraints"属性
// 提交按钮使用了"formnovalidate"属性来允许无验证的提交
 
// 获取表单元素
var form = document.getElementById('myForm');
var input = document.getElementById('myInput');
var submitBtn = document.getElementById('mySubmitBtn');
var submitNoValidateBtn = document.getElementById('mySubmitNoValidateBtn');
 
// 检查浏览器是否支持HTML5的约束验证API
if (input.validity) {
    // 为输入框的验证事件绑定处理函数
    input.addEventListener('invalid', function(event) {
        // 检查具体的验证类型
        if (input.validity.typeMismatch) {
            // 设置自定义的错误提示
            this.setCustomValidity('请输入有效的电子邮件地址。');
        } else if (input.validity.valueMissing) {
            // 设置自定义的错误提示
            this.setCustomValidity('电子邮件地址不能为空。');
        } else {
            // 没有其他验证错误,清除自定义错误提示
            this.setCustomValidity('');
        }
    });
}
 
// 提交按钮的点击事件处理函数
function handleSubmit(event) {
    // 阻止表单默认提交行为
    event.preventDefault();
    // 检查表单是否通过验证
    if (form.checkValidity()) {
        // 表单验证通过,执行提交操作
        alert('表单验证通过,数据将被提交。');
        // form.submit();
    } else {
        // 表单验证失败,执行错误处理
        alert('表单验证失败,请检查输入的数据。');
    }
}
 
// 绑定事件处理器到提交按钮
submitBtn.addEventListener('click', handleSubmit);
 
// 绑定事件处理器到无验证提交按钮
submitNoValidateBtn.addEventListener('click', function(event) {
    event.preventDefault();
    alert('提交数据,不进行验证。');
    // form.submit();
});

这段代码演示了如何使用HTML5约束验证API来对表单输入进行验证,并如何使用JavaScript来自定义错误提示信息。同时,代码中还展示了如何分别处理正常提交和无验证提交的情况。

2024-08-19

这是一个高校机房失物招领系统的项目需求,使用了Java、SpringBoot、MyBatis、JQuery、HTML和JSP等技术,并连接了MySQL数据库。

以下是一个简化的解决方案,包括用户登录功能的代码示例:




// UserController.java
@Controller
public class UserController {
 
    @Autowired
    private UserService userService;
 
    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public String login(@RequestParam String username, @RequestParam String password,
                        Model model, HttpSession session) {
        User user = userService.login(username, password);
        if (user != null) {
            session.setAttribute("user", user);
            return "redirect:/home";
        } else {
            model.addAttribute("error", "用户名或密码错误");
            return "login";
        }
    }
 
    // 其他控制器方法...
}
 
// UserService.java
@Service
public class UserService {
 
    @Autowired
    private UserMapper userMapper;
 
    public User login(String username, String password) {
        return userMapper.login(username, password);
    }
 
    // 其他服务方法...
}
 
// UserMapper.java
@Mapper
public interface UserMapper {
 
    @Select("SELECT * FROM user WHERE username = #{username} AND password = #{password}")
    User login(@Param("username") String username, @Param("password") String password);
 
    // 其他MyBatis方法...
}

在这个示例中,我们定义了一个UserController,其中包含了一个处理登录请求的方法。该方法将调用UserService中的login方法,然后UserService将调用UserMapper中的login方法来查询数据库。如果用户存在,则在会话中设置用户,并重定向到主页;如果用户不存在,则向模型添加错误消息,并返回登录页面。

请注意,这只是一个简化的示例,实际的项目需求可能需要更复杂的功能,如权限校验、失物登记、认领管理等。

2024-08-19

在JavaScript中实现SM2加密解密,你可以使用第三方库,例如 sm-crypto。以下是一个简单的例子:

首先,你需要安装 sm-crypto




npm install sm-crypto

然后,你可以使用以下代码进行SM2的加密和解密:




const sm2 = require('sm-crypto').sm2;
const keypair = sm2.generateKeyPairHex(); // 生成密钥对
 
// 公钥和私钥
const publicKey = keypair.publicKey;
const privateKey = keypair.privateKey;
 
// 需要加密的数据
const message = 'Hello, SM2!';
 
// 加密
const encrypted = sm2.doEncrypt(message, publicKey);
console.log('Encrypted message:', encrypted);
 
// 解密
const decrypted = sm2.doDecrypt(encrypted, privateKey);
console.log('Decrypted message:', decrypted);

请确保你的环境支持Node.js,并且已经安装了sm-crypto库。上述代码中,首先生成了一个SM2的密钥对,然后使用公钥对数据进行加密,使用私钥进行解密。

2024-08-19

在JavaScript中,jQuery是一个非常流行的库,它提供了一种简化JavaScript开发的方法。以下是一些使用jQuery的示例代码:

  1. 选择元素:



$(document).ready(function(){
  $("p").click(function(){
    $(this).hide();
  });
});

在这个例子中,当你点击段落标签(p)时,它会隐藏。

  1. 创建HTML元素:



$("<p>Hello, World!</p>").appendTo("body");

在这个例子中,我们创建了一个新的段落标签,并将其添加到了body的末尾。

  1. 修改CSS:



$("p").css("color", "blue");

在这个例子中,我们将所有段落标签的文本颜色改为蓝色。

  1. AJAX请求:



$.ajax({
  url: "test.html",
  context: document.body
}).done(function() {
  $(this).append("SUCCESS!");
}).fail(function() {
  $(this).append("ERROR!");
});

在这个例子中,我们发送一个AJAX请求到"test.html",并根据请求成功或失败在页面上添加相应的消息。

  1. 事件监听:



$("p").on("click", function(){
  alert("段落被点击了!");
});

在这个例子中,当点击段落标签时,会弹出一个警告框。

  1. 动画效果:



$("p").hide(1000);

在这个例子中,段落标签会在1000毫秒内消失。

  1. 获取输入字段的值:



var inputVal = $("#input").val();

在这个例子中,我们获取了ID为"input"的输入字段的值。

  1. 在文档加载完成后执行代码:



$(document).ready(function(){
  // 在这里写你的代码...
});

在这个例子中,我们在文档加载完成后执行了一些代码。

以上就是一些使用jQuery的基本例子。jQuery提供了许多其他的功能和方法,可以用于完成更复杂的操作。

2024-08-19

打地鼠游戏是一个经典的游戏,我们可以使用JavaScript和jQuery来制作。以下是一个简单的实现:

HTML部分:




<!DOCTYPE html>
<html>
<head>
    <title>打地鼠游戏</title>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
    <div id="game-container">
        <div id="game-board"></div>
    </div>
    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <script src="script.js"></script>
</body>
</html>

CSS部分(style.css):




#game-container {
    width: 500px;
    height: 500px;
    position: relative;
    user-select: none;
}
 
#game-board {
    width: 100%;
    height: 100%;
    position: absolute;
}
 
.mouse {
    width: 20px;
    height: 20px;
    background-color: #333;
    position: absolute;
    border-radius: 50%;
}

JavaScript部分(script.js):




$(document).ready(function() {
    const boardSize = 25;
    let gameBoard = $('#game-board');
    let mice = [];
 
    function createBoard() {
        for (let i = 0; i < boardSize; i++) {
            for (let j = 0; j < boardSize; j++) {
                $('<div>', { class: 'mouse' }).css({
                    top: i * 20,
                    left: j * 20
                }).appendTo(gameBoard);
            }
        }
        mice = $('.mouse');
    }
 
    function initGame() {
        createBoard();
        gameBoard.on('click', '.mouse', function() {
            $(this).hide();
            mice = mice.filter(function(index, mouse) {
                return $(mouse).is(':visible');
            });
            if (mice.length === 0) {
                alert('你赢了!');
                initGame();
            }
        });
    }
 
    initGame();
});

这个游戏的实现包括了创建游戏区域和打地鼠的逻辑。每次点击鼠标,鼠标图标就会消失,如果所有鼠标都被打掉,会弹出警告框提示玩家赢得游戏,并重新初始化游戏。这个例子简单展示了如何使用jQuery来操作DOM元素,并添加事件监听器,实现游戏的交互功能。

2024-08-19

在JavaScript中,打开文件对话框通常是通过HTML的<input>元素配合type="file"属性来实现的。以下是两种方案来实现这一功能:

方案1: 直接使用HTML <input> 元素




<input type="file" id="fileInput" />

JavaScript不需要特别代码来触发这个对话框。当用户点击这个input元素时,浏览器会自动打开文件对话框。

方案2: 使用JavaScript创建并触发<input>元素

如果你需要通过JavaScript动态地打开文件对话框,可以创建一个<input>元素,然后触发它的点击事件。




// 创建一个隐藏的input元素
var fileInput = document.createElement('input');
fileInput.type = 'file';
fileInput.style.display = 'none';
 
// 添加到文档中
document.body.appendChild(fileInput);
 
// 触发点击事件
fileInput.click();
 
// 选择文件后的回调函数(可选)
fileInput.onchange = function(event) {
    var file = event.target.files[0];
    // 处理文件
    console.log(file.name);
};

在这个例子中,我们创建了一个文件类型的<input>元素,将它隐藏,并添加到文档的<body>中。然后我们触发了它的点击事件,打开文件对话框。你也可以添加onchange事件处理器来处理用户选择的文件。

2024-08-19



// 获取元素
var element = document.querySelector('.my-element'); // 获取第一个class为my-element的元素
var elements = document.querySelectorAll('div.my-class'); // 获取所有class为my-class的div元素
 
// 操作元素
element.textContent = 'Hello, World!'; // 设置元素的文本内容
element.style.color = 'blue'; // 设置元素的文本颜色为蓝色
 
// 添加和移除类
element.classList.add('new-class'); // 添加一个新的类
element.classList.remove('old-class'); // 移除一个已存在的类
 
// 添加和删除属性
element.setAttribute('data-role', 'page'); // 添加一个新的属性
element.removeAttribute('data-role'); // 移除一个已存在的属性
 
// 添加和移除元素/节点
var newNode = document.createElement('p');
newNode.textContent = 'This is a new paragraph.';
element.appendChild(newNode); // 添加一个新的子节点
element.removeChild(newNode); // 移除一个已存在的子节点

这段代码展示了如何使用querySelectorquerySelectorAll获取元素,并对其进行文本内容设置、样式更改、类的添加和移除、属性的添加和移除,以及如何添加和移除节点。这些是在进行DOM操作时常用的基本操作。

2024-08-19



// 将富文本HTML转换为纯文本的函数
function htmlToPlainText(htmlContent) {
    // 使用DOM解析器创建一个新的DOM元素
    var tempDiv = document.createElement("div");
    tempDiv.innerHTML = htmlContent;
  
    // 使用textContent获取所有文本内容,并清除空格
    var text = tempDiv.textContent || tempDiv.innerText || "";
    text = text.trim();
  
    return text;
}
 
// 示例HTML内容
var htmlContent = "<p>这是一个<b>富文本</b>示例。</p>";
 
// 使用函数转换HTML为纯文本
var plainText = htmlToPlainText(htmlContent);
console.log(plainText); // 输出: 这是一个富文本示例。

这段代码定义了一个htmlToPlainText函数,它接受HTML内容作为参数,创建一个临时的DOM元素,并将HTML内容作为其innerHTML。然后,它使用textContentinnerText属性来获取所有文本内容,并移除前后的空格。最后,它返回一个纯文本字符串。

2024-08-19

在JavaScript中,可以使用addEventListener方法为DOM元素添加事件监听器。这样当特定事件发生时,可以执行一些JavaScript代码。

以下是一个简单的例子,演示了如何为一个按钮添加点击事件监听器:




// 获取按钮元素
const myButton = document.getElementById('myButton');
 
// 为按钮添加点击事件监听器
myButton.addEventListener('click', function() {
    alert('按钮被点击了!');
});

在这个例子中,当按钮被点击时,会弹出一个警告框。

addEventListener方法接受两个参数:

  1. 事件名称:一个字符串,指定要监听的事件类型,例如'click''mouseover'等。
  2. 事件处理函数:当事件发生时要执行的函数。

你可以为同一个元素添加多个事件监听器,并且它们会按照被添加的顺序依次触发。如果同一个事件监听器被添加多次,它也会被多次触发。为了避免这种情况,可以使用removeEventListener方法移除不需要的监听器。

2024-08-19

CSS(级联样式表)是一种用来描述网页和其他HTML文件样式的语言。CSS可以通过多种方式引入HTML文档中,主要有以下几种方式:

  1. 内联样式:直接在HTML标签中使用style属性来添加样式。



<p style="color: blue;">这是一个蓝色的段落。</p>
  1. 内部样式表:在HTML文档的<head>部分使用<style>标签来添加样式。



<head>
    <style>
        p { color: red; }
    </style>
</head>
<body>
    <p>这是一个红色的段落。</p>
</body>
  1. 外部样式表:创建一个CSS文件,并通过HTML文档的<link>标签引入。



<!-- 在<head>部分引入外部CSS文件 -->
<head>
    <link rel="stylesheet" type="text/css" href="styles.css">
</head>

在CSS中,选择器是一种模式,用于选择需要应用样式的元素。CSS中的选择器主要有以下几种:

  1. 类选择器:以.开头,用来选择class名匹配的元素。



.blue-text {
    color: blue;
}



<p class="blue-text">这是一个蓝色的段落。</p>
  1. ID选择器:以#开头,用来选择id名匹配的元素。



#red-text {
    color: red;
}



<p id="red-text">这是一个红色的段落。</p>
  1. 元素选择器:直接使用HTML元素名称来选择该元素。



p {
    color: green;
}



<p>这是一个绿色的段落。</p>
  1. 伪类选择器:用来选择某些元素的特定状态,比如链接的不同状态。



a:hover {
    text-decoration: underline;
}



<a href="https://example.com">悬停我!</a>

CSS选择器可以结合使用,以实现更为复杂的选择需求,例如:




/* 选择class为"button"且具有"highlighted"类的元素 */
.button.highlighted {
    background-color: yellow;
}



<button class="button highlighted">高亮按钮</button>

以上是CSS引入方式和基本选择器的简单介绍和示例。在实际开发中,CSS还可以用来设置字体、布局、背景等多种属性,并可以通过继承、层叠等机制处理样式冲突。