JS的isNAN:判断数字是否合法

news2024/12/24 18:08:19

定义和用法

isNaN() 函数用于检查其参数是否是非数字值。

如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。

语法

isNaN(value)

 

参数描述
value必需。要检测的值。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <!-- <meta http-equiv="X-UA-Compatible" content="IE=edge"> -->
    <!-- <meta name="viewport" content="width=device-width, initial-scale=1.0"> -->
    <title>Document</title>
</head>
<body>
    <div id="show"></div>
    <a href="javascript:checknum(0)">验证数字</a><br/>
    <input type="button" onclick="button1_click()" value="提交"/>
    
    <script>
        function checknum(num){
            var day = parseInt(num)
            var x =  document.getElementById("show")
            var str = ""
            if(isNaN(day)){
                str = "非法数字:" + day + "<br>"
                x.innerHTML += str
                return;
            }

            switch(day) {
                case 1:
                    document.write(parseFloat("3.14"))
                    break;
                case 2:
                    document.write(parseFloat("3.15abc"))
                    break;
                default:
                    //document.write("" + num)
                    str = "合法数字" + day + "<br>"
                    x.innerHTML += str
                    break;
            }
        }
        function check2(){
            document.write(isNaN(123)+ "<br>");
            document.write(isNaN(-1.23)+ "<br>");
            document.write(isNaN(5-2)+ "<br>");
            document.write(isNaN(0)+ "<br>");
            document.write(isNaN("Hello")+ "<br>");
            document.write(isNaN("2005/12/12")+ "<br>");
        }
        window.onload = function(){
            console.log("页面加载完成")
            checknum(101);
            checknum("101");
            checknum("101abc");
            checknum("abc101");
            check2();
            
        }
        function button1_click(){
            alert("点击事件")
        }    
        
        
    </script>
    
</body>
</html>

这个代码有问题,该代码中。存在document.write覆盖页面的问题。导致这种现象的操作有两种

通过onclick() 点击事件触发执行document.write(),会使document.write()覆盖原来的页面。
在window.onload里面执行document.write(),也会将原来的页面覆盖。
总的来说就是 在页面渲染结束后(即文档加载后)使用document.write。会覆盖整个文档。

window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。
点击事件也是页面渲染完毕后,鼠标点击才能执行。

w3school的官方说明:您只能在 HTML 输出中使用 document.write。如果您在文档加载后使用该方法,会覆盖整个文档。

避免方法:

  1. 在onload之前使用document.wriet()方法;
  2. 避免在onclick()事件中使用,可用console 或 innerHTML 代替

修改后的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <!-- <meta http-equiv="X-UA-Compatible" content="IE=edge"> -->
    <!-- <meta name="viewport" content="width=device-width, initial-scale=1.0"> -->
    <title>Document</title>
</head>
<body>
    <div id="show"></div>
    <a href="javascript:checknum(0)">验证数字</a><br/>
    <input type="button" onclick="button1_click()" value="提交"/><br>
    
    <script>
        function checknum(num){
            var day = parseInt(num)
            var x =  document.getElementById("show")
            var str = ""
            if(isNaN(day)){
                str = "非法数字:" + day + "<br>"
                x.innerHTML += str
                return;
            }

            switch(day) {
                case 1:
                    document.write(parseFloat("3.14"))
                    break;
                case 2:
                    document.write(parseFloat("3.15abc"))
                    break;
                default:
                    //document.write("" + num)
                    str = "合法数字" + day + "<br>"
                    x.innerHTML += str
                    break;
            }
        }
        function check2(){
            document.write(isNaN(123)+ "<br>");
            document.write(isNaN(-1.23)+ "<br>");
            document.write(isNaN(5-2)+ "<br>");
            document.write(isNaN(0)+ "<br>");
            document.write(isNaN("Hello")+ "<br>");
            document.write(isNaN("2005/12/12")+ "<br>");
        }
        window.onload = function(){
            console.log("页面加载完成")
            checknum(101);
            checknum("101");
            checknum("101abc");
            checknum("abc101");            
            
        }
        function button1_click(){
            alert("点击事件")
        }    
        check2();
        
    </script>
    
</body>
</html>

 测试结果:

小结 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/592287.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

百万数据导出,居然爆炸了OutOfMemoryError?

一、问题的提出 /*** 大数据导出1.0* /demo/exportExcel4* param response*/ GetMapping("/exportExcel4") public void exportExcel4(HttpServletResponse response) throws IOException {Date start new Date();// 模拟数据List<UserExportVO> users new …

「从零入门推荐系统」19:HM推荐系统代码实战案例

作者 | gongyouliu 编辑 | gongyouliu 我们在上一章中利用Netflix prize数据集讲解了最基础、最简单的一些推荐系统召回、排序算法&#xff0c;大家应该对怎么基于Python实现推荐算法有了一些基本的了解了。接着上一章的思路&#xff0c;本章我们会基于一个更复杂、更近代一点的…

JAVA企业级开发 1.5 初探Spring AOP

一、提出游吟诗人唱赞歌任务 骑士执行任务前和执行任务后&#xff0c;游吟诗人唱赞歌 &#xff08;一&#xff09;采用传统方式实现 修改day04子包的勇敢骑士类 修改day04子包里的救美骑士类 执行测试类 - TestKnight &#xff08;二&#xff09;采用传统方式实现的缺…

Hive部署本地模式

本地模式 使用mysql替换derby进行元数据的存储&#xff0c;hive的相关进程都是在同一台机器上&#xff0c;即本地模式。mysql因为是独立的进程&#xff0c;所以mysql可以和hive在同一机器上&#xff0c;也可以在其他机器上。 说明&#xff1a; 通常使用关系型数据库来进行元数据…

微信公众号、支付接口认证:一步步教您如何实现

1、微信公众号接口认证方案 1.1 认证流程 1&#xff09;官方配置Token验证 Token不在网络中传递 2&#xff09;开发一个Token验证接口 Token及其它参数拼接并字典排序再做sha摘要计算微信定期调用此接口来验证身份正确性通过摘要验证判断请求来源微信&#xff08;Token配置…

TensorFlow进行MNIST数据集手写数字识别,保存模型并且进行外部手写图片测试

首先&#xff0c;你已经配置好Anaconda3的环境&#xff0c;下载了TensorFlow模块&#xff0c;并且会使用jupyter了&#xff0c;那么接下来就是MNIST实验步骤。 数据集官网下载&#xff1a;MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burgeshttp…

apple pencil的替代品买啥比较好?平价电容笔推荐

随着技术的发展&#xff0c;出现了许多种类的电容笔。一款好的电容笔&#xff0c;不但可以极大地提升我们的工作效率&#xff0c;也可以极大地改善我们的学习效果。平替电容笔无论是在技术方面&#xff0c;还是在产品质量方面&#xff0c;都有着非常广泛的应用前景。下面就是我…

Java领域的序列化与反序列化,Java的对象如何传输,常用序列化技术

文章目录 一、引出问题&#xff1a;Java原生的序列化1、基于Socket传输对象案例2、什么是序列化3、Java 原生序列化4、serialVersionUID 的作用5、transient 关键字绕开 transient 机制的办法writeObject 和 readObject 原理 6、Java 序列化的一些简单总结 二、分布式架构下常见…

【智能座舱系列| AR-HUD增强现实】—AR-HUD到底是“鸡肋”还是“真”香?

AR-HUD 概念 HUD,即抬头显示(Head Up Display),又叫平视显示系统。它的作用,就是把时速、导航等重要的行车信息,投影到驾驶员前面的挡风玻璃上,让驾驶员尽量做到不低头、不转头就能看到。 这种显示系统,原是军用战斗机上的显示系统,飞行员不必低头,就能在挡风玻璃上…

ChatGPT学习笔记;Meta发布Megabyte AI模型抗衡Transformer

AI知识 ChatGPT学习笔记 文章包括如下的内容&#xff1a; ChatGPT 介绍科普 背景知识ChatGPT 功能ChatGPT 原理 等等&#xff0c;文章的地址在这里。 AI新闻 &#x1f680; Meta发布Megabyte AI模型抗衡Transformer&#xff1a;解决后者已知问题、速度提升4成 摘要&…

笔试强训5

作者&#xff1a;爱塔居 专栏&#xff1a;笔试强训 作者简介&#xff1a;大三学生&#xff0c;希望和大家一起进步 目录 day6 day7 day6 1.关于抽象类与最终类&#xff0c;下列说法错误的是&#xff1f; A 抽象类能被继承&#xff0c;最终类只能被实例化。 B 抽象类和最终类…

NET HELPMSG 3534 报错

使用了带管理员权限的 PowerShell&#xff08;即在管理员权限下运行CMD&#xff09; 然后进行安装和服务启动操作 1、清空 MySQL 下的 data 文件夹&#xff1b; 2、确保系统环境变量中已经配置了 mysql 的 bin 目录到Path中&#xff1b; 3、执行以下命令&#xff1a; sc delet…

《Opencv3编程入门》学习笔记—第四章

《Opencv3编程入门》学习笔记 记录一下在学习《Opencv3编程入门》这本书时遇到的问题或重要的知识点。 第四章 OpenCV数据结构与基本绘图 四、基础图像容器Mat &#xff08;一&#xff09;数字图像存储概述 图像在数码设备中的表现形式为包含众多强度值的像素点矩阵。 &a…

JAVA键盘录入

文章目录 JAVA键盘录入1.导包2.创建对象3.接受数据接收 b o o l e a n \color{red}{boolean} boolean类型数据接收 b y t e \color{red}{byte} byte类型数据接收 s h o r t \color{red}{short} short类型数据接收 i n t \color{red}{int} int类型数据接收 l o n g \color{red}{…

库的制作与使用

什么是库 库是一种可执行的二进制文件&#xff0c;是编译好的代码。使用库可以提高开发效率。在 Linux 下有静态库和动 态库。因此编译出来的体积就比较大。 静态库在程序编译的时候会被链接到目标代码里面。所以程序在运行的时候不再需要静态库了。因此 编译出来的体积就比较大…

轻松学习白嫖GPT-4,已经标星38K,不再害怕高昂的AI模型费用!

文章目录 白嫖方式GPT-4当前可用站点 白嫖方式GPT-4 计算机专业学生xtekky在GitHub上发布了一个名为gpt4free的开源项目&#xff0c;该项目允许您免费使用GPT4和GPT3.5模型。这个项目目前已经获得了380000颗星。 开源地址&#xff1a;https://github.com/xtekky/gpt4free 简而…

vue ts写法

Vue.js 和 TypeScript 结合使用可以让你的项目更加健壮和易于维护。在 Vue 3 中&#xff0c;你可以使用 Vue.js 的 Composition API 和 TypeScript 一起使用。以下是一个简单的 Vue.js 和 TypeScript 结合使用的例子&#xff1a; 首先&#xff0c;确保你已经安装了 Vue.js 和 T…

如何从电机控制转换为运动控制

随着越来越多的技术广泛应用于工业自动化&#xff0c;我们已经进入了工业4.0时代。新技术不断涌现&#xff0c;赋能人工智能和机器学习、数据分析、工业网络、网络安全和功能安全。然而&#xff0c;大多数工业自动化作为其他所有技术的核心&#xff0c;仍然依靠机器人和运动控制…

【PWN · ret2text | PIE 】[NISACTF 2022]ezpie

简单的PIE绕过 目录 前言 一、题目重述 二、解题思路 1.现有信息 2.思考过程 3.exp 总结 前言 所接触的PIE保护的第一题&#xff0c;也非常简单。 一、题目重述 二、解题思路 1.现有信息 PIE保护——程序可能被加载到任意位置&#xff0c;所以位置是可变的。程序返回…

聚观早报 | 英伟达推「AI」超算;中国2030年前载人登月

今日要闻&#xff1a;英伟达推「AI」超算&#xff1b;中国2030年前载人登月&#xff1b;AI大热&#xff0c;游戏股全线大涨&#xff1b;ofo创始人二次创业项目陷入困境&#xff1b;微信视频号原创标记已对外显示 英伟达推「AI」超算 5 月 29 日&#xff0c;NVIDIA 宣布推出一款…