JavaScript

avaScript的引入方式分为以下三种:

内联方式:直接在HTML页面中嵌入JavaScript代码,使用 script 标签将JavaScript代码放置在HTML文件的 head 或 body 标签内。例如:

<head>
  <script>
    // JavaScript代码
  </script>
</head>

这种方式适用于较小的脚本或临时性的代码

外部文件方式:将JavaScript代码保存在一个独立的外部文件中,然后使用 script 标签的src属性将文件引入到HTML页面中。例如:

<head>
  <script src="script.js"></script>
</head>

在外部文件中编写JavaScript代码,可以提高代码的可维护性和重用性。

内部方式:将JavaScript代码直接嵌入HTML文件的 script 标签内,但不使用src属性引入外部文件。例如:

<head>
  <script>
    // JavaScript代码
  </script>
</head>

 常见BOM&DOM操作
BOM(Browser Object Model)是指浏览器对象模型,是JavaScript中与浏览器交互的一组对象的集合。BOM提供了一系列的对象,用于操作浏览器窗口和浏览器本身。最常用的BOM对象就是window对象,alert() confim() 方法都是window的内置对象

DOM(文档对象模型)是浏览器用来表示网页文档的对象模型,通过DOM,JavaScript可以访问和操作网页中的元素和属性。最常见的就是与document相关的方法,他们都属于DOM操作,比如

getElementsByClassName():根据元素的class属性获取DOM节点。

getElementsByTagName():根据元素的标签名获取DOM节点。

还常用的DOM操作就是事件监听,我们可以设置对应的函数当我们监听的事件执行后自动执行,比如鼠标点击等,比如密码校验常常都是基于此。

常见的事件:

onclick:鼠标单击事件

onblur:元素失去焦点

onfocus:元素获得焦点

onsubmit:当表单提交时触发该事件

用密码校验的例子可以很好的锻炼这方面的掌握度

这个页面包含了以下功能:

在确认密码输入框失去焦点时(onblur事件),会自动验证密码是否一致,并在输入框后显示红色错误提示。

在四级成绩输入框失去焦点时,会自动验证成绩是否在0到710之间,并在输入框后显示红色错误提示。

在手机号输入框失去焦点时,会自动验证手机号格式是否正确,并在输入框后显示红色错误提示。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>表单验证示例</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 20px;
            background-color: #f4f4f4;
        }
        .container {
            max-width: 500px;
            margin: auto;
            background: white;
            padding: 20px;
            border-radius: 8px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
        }
        h2 {
            text-align: center;
            margin-bottom: 20px;
        }
        .form-group {
            margin-bottom: 15px;
        }
        .form-group label {
            display: block;
            margin-bottom: 5px;
        }
        .form-group input {
            width: 100%;
            padding: 8px;
            box-sizing: border-box;
        }
        .form-group input[type="submit"] {
            background-color: #007bff;
            color: white;
            border: none;
            cursor: pointer;
        }
        .form-group input[type="submit"]:hover {
            background-color: #0056b3;
        }
        .error {
            color: red;
            margin-top: 5px;
        }
    </style>
</head>
<body>
    <div class="container">
        <h2>用户注册</h2>
        <form id="registrationForm" onsubmit="return validateForm()">
            <div class="form-group">
                <label for="name">姓名:</label>
                <input type="text" id="name" name="name" required>
            </div>
            <div class="form-group">
                <label for="password">密码:</label>
                <input type="password" id="password" name="password" required>
            </div>
            <div class="form-group">
                <label for="confirmPassword">确认密码:</label>
                <input type="password" id="confirmPassword" name="confirmPassword" required onblur="validatePassword()">
                <div class="error" id="passwordError">密码不匹配</div>
            </div>
            <div class="form-group">
                <label for="score">四级成绩:</label>
                <input type="text" id="score" name="score" required onblur="validateScore()">
                <div class="error" id="scoreError">成绩必须在0到710之间</div>
            </div>
            <div class="form-group">
                <label for="phone">手机号:</label>
                <input type="text" id="phone" name="phone" required onblur="validatePhone()">
                <div class="error" id="phoneError">无效的手机号</div>
            </div>
            <div class="form-group">
                <input type="submit" value="提交">
            </div>
        </form>
    </div>
 
    <script>
        function validatePassword() {
            const password = document.getElementById('password').value;
            const confirmPassword = document.getElementById('confirmPassword').value;
            const passwordError = document.getElementById('passwordError');
            if (password !== confirmPassword) {
                passwordError.style.display = 'block';
            } else {
                passwordError.style.display = 'none';
            }
        }
 
        function validateScore() {
            const score = document.getElementById('score').value;
            const scoreError = document.getElementById('scoreError');
            if (isNaN(score) || score < 0 || score > 710) {
                scoreError.style.display = 'block';
            } else {
                scoreError.style.display = 'none';
            }
        }
 
        function validatePhone() {
            const phone = document.getElementById('phone').value;
            const phoneError = document.getElementById('phoneError');
            const phonePattern = /^1[3-9]\d{9}$/;
            if (!phonePattern.test(phone)) {
                phoneError.style.display = 'block';
            } else {
                phoneError.style.display = 'none';
            }
        }
 
        function validateForm() {
            validatePassword();
            validateScore();
            validatePhone();
            const passwordError = document.getElementById('passwordError').style.display === 'none';
            const scoreError = document.getElementById('scoreError').style.display === 'none';
            const phoneError = document.getElementById('phoneError').style.display === 'none';
            return passwordError && scoreError && phoneError;
        }
    </script>
</body>
</html>

其中: 

 display: block; - 元素会被渲染成块级元素,它会在页面上占据一整行,宽度默认填满父元素的宽度,除非指定了宽度。块级元素可以设置宽度和高度。
display: none; - 元素不会被渲染到页面上,也不会占据任何空间。这相当于将元素隐藏。

最终效果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值