JS中的NaN和isNaN

本文详细解析了JavaScript中NaN的概念及其特性,并介绍了isNaN函数的使用方法,包括如何判断各种类型的值是否为数字。

JS中的NaN和isNaN

一、NaN:not a number 不是个数字的数字类型

但是属于数字类型

var a = number ('abc');
alert(a);  //NaN
alert(typeof(a));  //number

注意:一旦程序出现NaN,肯定进行非法操作

特性:1.NaN是假的布尔值

var a = number ('abc');
if(a){
  alert('真');
}else{
  ('假')
}  //假

2.NaN与自己都不相等

var a = number ('abc');
alert(a===a);  //false

二、isNaN

is not a number 是不是不是一个数字(不是数字)

作用:1.可以判断某些值是不是数字
返回true or false

2.不喜欢数字,讨厌数字

(1).对于数字

alert(isNaN(250)); //false

(2).对于字符串。

alert(isNaN('我爱你'));   //true
alert(isNaN('250'));   //false

isNaN是内部基于Number()的判断,所以对于字符串我爱你,Number()返回NaN,则isNaN返回true;对于字符串250,Number()先将'250'转化为数字250,然后isNaN再做出判断。

(3).对于函数

alert(isNaN(function(){alert(1)}); //true

(4).对于布尔值

alert(isNaN(true)); //false

(5).对于空数组

alert(isNaN([ ]));  //false

三、HTML中拿到的内容,类型都是字符串

所以当需要判断数据类型时,需要用到isNaN()

window.onload = function (){
    var aInp = document.getElementsByTagName('input');
    var str = '';
    aInp[1].onclick = function (){
        str = aInp[0].value;
        // HTML 中拿到的内容,类型都是字符串
        // alert( typeof str );

        if( isNaN(str) ){
            alert( str + '不是数字' );
        }else{
            alert( str + '是数字' );
        }
    };
};
posted @ 2018-06-11 17:25 welkin-qing 阅读( ...) 评论( ...) 编辑 收藏
<think>好的,我现在需要帮用户写一个学籍管理系统,使用HTML、PHPJavaScript。用户说不需要美化,只要必要的代码。首先,我得考虑系统的基本功能,比如添加、查询、修改、删除学生信息。然后,需要设计数据库结构,创建合适的表来存储学生信息。 首先,数据库部分应该用MySQL,PHPMySQL搭配比较好。学生表可能包括学号、姓名、性别、年龄、班级等字段。所以需要先创建一个数据库表,比如数据库名为student_sys,表名为students,字段包括id(主键自增)、student_id(学号)、name、gender、age、class。 接下来是前端页面,用HTML写一个简单的表单,包含输入字段提交按钮。可能需要用JavaScript来做表单验证,比如检查学号是否已存在,或者年龄是否为数字。然后,用PHP处理表单提交,将数据插入数据库。 然后,还需要展示学生信息的页面,用PHP从数据库读取数据并显示成表格。同时,每个学生信息后面需要有编辑删除的链接,点击后进入编辑页面或执行删除操作。 编辑页面需要先根据ID获取当前学生的信息,填充到表单中,然后提交修改后的数据到另一个PHP处理脚本。删除操作则直接通过传递ID参数,执行SQL的DELETE语句。 需要注意防止SQL注入,所以PHP部分要使用预处理语句。比如用PDO或者mysqli的预处理功能。此外,表单提交后需要有成功或失败的提示,可以用JavaScript的alert或者页面跳转后的提示信息。 文件结构方面,可能需要以下几个文件: 1. index.html 或者 index.php:主页面,展示学生列表添加表单。 2. db_connect.php:数据库连接配置,供其他PHP文件引用。 3. add_student.php:处理添加学生的表单提交。 4. edit_student.php:显示编辑表单处理编辑提交。 5. delete_student.php:处理删除请求。 6. 可能需要一个js文件或者内联JavaScript来处理表单验证。 现在,开始写代码。首先创建数据库表,这部分需要用户自己在MySQL中执行,或者在PHP中使用CREATE语句,但更安全的方式是用户手动创建。然后db_connect.php里写连接数据库的代码,使用PDO或者mysqli。这里选PDO,因为更现代,支持预处理。 然后,主页面index.php需要包含添加表单学生列表。添加表单用POST方法提交到add_student.php。学生列表部分用PHP从数据库读取数据,循环输出到表格中。每个学生行有编辑删除链接,传递学生ID参数。 处理添加的PHP脚本要接收POST数据,验证是否填写完整,然后插入数据库。处理成功后重定向回主页,并带成功参数,比如header('Location: index.php?status=success'),然后在index.php中判断是否有status参数,用JavaScript提示。 编辑页面edit_student.php需要先根据GET参数获取学生信息,填充到表单中,提交后更新数据库。删除脚本delete_student.php根据GET参数删除记录。 JavaScript部分主要用于表单提交前的验证,比如检查学号是否为空,年龄是否为数字,或者阻止表单提交如果验证不通过。 还需要考虑错误处理,比如数据库连接失败,或者查询出错时,显示错误信息。此外,防止跨站脚本攻击(XSS),在输出学生数据到页面时,使用htmlspecialchars()函数转义。 现在把这些步骤转化成具体的代码文件,确保每个部分的功能正常,并且各文件之间的数据传递正确。同时,保持代码简洁,没有多余的美化样式,只保留必要的功能。</think>我为您提供一个基础版学籍管理系统的核心代码实现(包含增删改查功能),以下是分步骤说明: 1. 数据库创建(MySQL) ```sql CREATE DATABASE student_sys; USE student_sys; CREATE TABLE students ( id INT PRIMARY KEY AUTO_INCREMENT, student_id VARCHAR(20) UNIQUE, name VARCHAR(50), gender ENUM('男','女'), age INT, class VARCHAR(50) ); ``` 2. 创建数据库连接文件(db_connect.php) ```php <?php $host = 'localhost'; $dbname = 'student_sys'; $user = 'root'; $pass = ''; try { $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $pass); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { die("数据库连接失败: " . $e->getMessage()); } ?> ``` 3. 主界面(index.php) ```php <?php require 'db_connect.php'; ?> <!DOCTYPE html> <html> <head> <title>学籍管理系统</title> <script> function validateForm() { const sid = document.forms["addForm"]["student_id"].value; const age = document.forms["addForm"]["age"].value; if (sid === "" || age === "") { alert("学号年龄必须填写"); return false; } if (isNaN(age) || age < 1) { alert("年龄必须为有效数字"); return false; } } </script> </head> <body> <h2>添加学生</h2> <form name="addForm" method="post" action="add_student.php" onsubmit="return validateForm()"> 学号: <input type="text" name="student_id"><br> 姓名: <input type="text" name="name"><br> 性别: <select name="gender"> <option value="男">男</option> <option value="女">女</option> </select><br> 年龄: <input type="number" name="age"><br> 班级: <input type="text" name="class"><br> <input type="submit" value="添加"> </form> <h2>学生列表</h2> <table border="1"> <tr> <th>学号</th><th>姓名</th><th>性别</th><th>年龄</th><th>班级</th><th>操作</th> </tr> <?php $stmt = $pdo->query("SELECT * FROM students"); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo "<tr> <td>{$row['student_id']}</td> <td>{$row['name']}</td> <td>{$row['gender']}</td> <td>{$row['age']}</td> <td>{$row['class']}</td> <td> <a href='edit_student.php?id={$row['id']}'>编辑</a> <a href='delete_student.php?id={$row['id']}' onclick='return confirm(\"确认删除?\")'>删除</a> </td> </tr>"; } ?> </table> </body> </html> ``` 4. 添加学生(add_student.php) ```php <?php require 'db_connect.php'; if ($_SERVER['REQUEST_METHOD'] === 'POST') { try { $stmt = $pdo->prepare("INSERT INTO students (student_id, name, gender, age, class) VALUES (?, ?, ?, ?, ?)"); $stmt->execute([ $_POST['student_id'], $_POST['name'], $_POST['gender'], $_POST['age'], $_POST['class'] ]); header("Location: index.php?status=added"); } catch(PDOException $e) { die("添加失败: " . $e->getMessage()); } } ?> ``` 5. 编辑学生(edit_student.php) ```php <?php require 'db_connect.php'; // 获取学生信息 if (isset($_GET['id'])) { $stmt = $pdo->prepare("SELECT * FROM students WHERE id = ?"); $stmt->execute([$_GET['id']]); $student = $stmt->fetch(); } // 更新信息 if ($_SERVER['REQUEST_METHOD'] === 'POST') { try { $stmt = $pdo->prepare("UPDATE students SET student_id = ?, name = ?, gender = ?, age = ?, class = ? WHERE id = ?"); $stmt->execute([ $_POST['student_id'], $_POST['name'], $_POST['gender'], $_POST['age'], $_POST['class'], $_POST['id'] ]); header("Location: index.php?status=updated"); } catch(PDOException $e) { die("更新失败: " . $e->getMessage()); } } ?> <!DOCTYPE html> <html> <body> <h2>编辑学生</h2> <form method="post"> <input type="hidden" name="id" value="<?= $student['id'] ?>"> 学号: <input type="text" name="student_id" value="<?= htmlspecialchars($student['student_id']) ?>"><br> 姓名: <input type="text" name="name" value="<?= htmlspecialchars($student['name']) ?>"><br> 性别: <select name="gender"> <option value="男" <?= $student['gender'] === '男' ? 'selected' : '' ?>>男</option> <option value="女" <?= $student['gender'] === '女' ? 'selected' : '' ?>>女</option> </select><br> 年龄: <input type="number" name="age" value="<?= $student['age'] ?>"><br> 班级: <input type="text" name="class" value="<?= htmlspecialchars($student['class']) ?>"><br> <input type="submit" value="更新"> </form> </body> </html> ``` 6. 删除学生(delete_student.php) ```php <?php require 'db_connect.php'; if (isset($_GET['id'])) { try { $stmt = $pdo->prepare("DELETE FROM students WHERE id = ?"); $stmt->execute([$_GET['id']]); header("Location: index.php?status=deleted"); } catch(PDOException $e) { die("删除失败: " . $e->getMessage()); } } ?> ``` 使用说明: 1. 创建MySQL数据库表 2. 修改db_connect.php中的数据库连接信息 3. 将文件部署到PHP服务器环境 4. 访问index.php即可使用 系统功能: - 添加学生信息(带前端验证) - 显示所有学生信息 - 编辑现有学生信息 - 删除学生记录 - 基础数据验证防SQL注入 注意:此为简化版本,实际生产环境需要添加以下功能: 1. 用户身份验证 2. 更严格的数据验证 3. 错误日志记录 4. 分页功能 5. 数据导出功能 6. 更完善的异常处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值