一、背景

  话说今天在调试js的时候,碰到一个很奇怪的问题,现记录一下。当使用alert()函数弹出提示时,总是报错,你没看错,alert函数报错了。

二、详细说明

  当时正在做一个关于告警的页面展示功能,其中一段js为:

function search(){
var startTime=$("#startTime").val();
var endTime=$("#endTime").val();
if(startTime==null || startTime.trim()==""){
alert("查询开始时间必须填写!")
return;
}
if(endTime!=null && endTime.trim()!=""){
if(endTime<=startTime){
alert("查询结束时间必须大于查询开始时间");
return;
}
}
show(startTime,endTime);
}

  就是普普通通的弹出提示功能,但是每当要弹出的时候总是报错,通过火狐的firebug查看,报错如下:

  当时我就蒙了,alert不是js最基本的方法吗,怎么告诉我不是一个函数呢?

三、解决过程

  我一看,这个现象已经超出了我的认知范围,那是指定解决不了(其实偷偷解决了老半天),只能去百度,可是一个答案都没有。这时候我已经陷入深深的绝望了,距离问题发现已经一个多小时了,看来不得以只能拿出梯子上墙了,果然找到问题的根源了,网友提醒说alert是不是被重新定义了!!!,我一听就秒懂,我正在做告警的页面,会不会有的变量定义为alert了呢,回去赶紧搜索一下,果不其然找到了:

//原始事件量
var orgEvent = echarts.init(document.getElementById('orgEvent'));
//事件量
var event = echarts.init(document.getElementById('event'));
//告警量
var alert = echarts.init(document.getElementById('alert'));

  多么痛的领悟,这种事居然都能发生在我身上,重命名后问题就解决了。

四、痛定思痛

  单就这个问题收获点什么:

  1. 当一个你认为绝对不会发生的问题发生了,不要总在心里默念不可能,不可能,这会降低你解决这个问题的智商。
  2. 当应该出现某种结果的时候,发生意外了,这时候应该从最基本的开始找起,拼写错误、路径错误、字母大小写等等
  3. 必然发生的事没发生,那么中间肯定发生了什么,就像这个例子中,alert做为一个函数必然应该弹窗,结果报错说不是函数,那么肯定被更改了

【疑难杂症系列01】TypeError: alert is not a function的更多相关文章

  1. 【疑难杂症01】TypeError: alert is not a function

    一.背景 话说今天在调试js的时候,碰到一个很奇怪的问题,现记录一下.当使用alert()函数弹出提示时,总是报错,你没看错,alert函数报错了. 二.详细说明 当时正在做一个关于告警的页面展示功能 ...

  2. JavaScript进阶系列01,函数的声明,函数参数,函数闭包

    本篇主要体验JavaScript函数的声明.函数参数以及函数闭包. □ 函数的声明 ※ 声明全局函数 通常这样声明函数: function doSth() { alert("可以在任何时候调 ...

  3. java io系列01之 "目录"

    java io 系列目录如下: 01. java io系列01之  "目录" 02. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括 ...

  4. SAP接口编程 之 JCo3.0系列(01):JCoDestination

    SAP接口编程 之 JCo3.0系列(01):JCoDestination 字数2101 阅读103 评论0 喜欢0 JCo3.0是Java语言与ABAP语言双向通讯的中间件.与之前1.0/2.0相比 ...

  5. Java 集合系列 01 总体框架

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  6. Java 之 I/O 系列 01 ——基础

    Java 之 I/O 系列 目录 Java 之 I/O 系列 01 ——基础 Java 之 I/O 系列 02 ——序列化(一) Java 之 I/O 系列 02 ——序列化(二) 整理<疯狂j ...

  7. 委托、Lambda表达式、事件系列01,委托是什么,委托的基本用法,委托的Method和Target属性

    委托是一个类. namespace ConsoleApplication1 { internal delegate void MyDelegate(int val); class Program { ...

  8. [.NET MVC4 入门系列01]Helloworld MVC 4 第一个MVC4程序

    [.NET MVC4 入门系列01]Helloworld MVC 4 第一个MVC4程序   一.练习项目: http://www.asp.net/mvc/tutorials/mvc-4/gettin ...

  9. php从入门到放弃系列-01.php环境的搭建

    php从入门到放弃系列-01.php环境的搭建 一.为什么要学习php 1.php语言适用于中小型网站的快速开发: 2.并且有非常成熟的开源框架,例如yii,thinkphp等: 3.几乎全部的CMS ...

随机推荐

  1. 入门:Java Map<String,String>遍历及修改

    重点:在使用Map时注意key-value,key用于检索value的内容. 在正常情况下,可以不允许重复:在java中分为2中情况,一是内存地址重复,另一个是不同的地址但内容相等. 在使用Map是一 ...

  2. oracle 12c 加入系统服务

    1修改oratab文件 vi /etc/oratab #把后台一行的N改为Y db01:/usr/oracle/app/product/11.2.0/dbhome_1:Y 2如果安装时.bash_pr ...

  3. Windows 下安装 MongoDB

    Windows 下安装 MongoDB 的步骤:1.官网www.mongodb.com下载安装包或zip包2.解压下载的文件到文件夹 D:\mongo .3.使用管理员权限打开CMD,导航到目录 D: ...

  4. window 使用vagrant搭建开发开发环境

    # -*- mode: ruby -*-# vi: set ft=ruby : # All Vagrant configuration is done below. The "2" ...

  5. 第一章 Java多线程技能

    1.初步了解"进程"."线程"."多线程" 说到多线程,大多都会联系到"进程"和"线程".那么这两者 ...

  6. 又一枚精彩的弹幕效果jQuery实现

    精彩的弹幕效果分享给大家,具有一定的参考价值,感兴趣的朋友可以尝试制作弹幕,具体内容如下   简易弹幕效果:将发布的内容随机显示在弹幕右侧,逐渐左移最后消失.   涉及知识点:val().random ...

  7. beaglebone black 安装QNX过程

    首先去http://community.qnx.com/sf/go/projects.bsp/frs.texas_instruments_am335_beaglebo 把下面4个下载下来.

  8. 1.openGL 初探

    GLEW, GLFW和GLM介绍 现在你有了工程,就让我们开始介绍下工程所用到的开源库和为啥需要这些. The OpenGL Extension Wrangler (GLEW)是用来访问OpenGL ...

  9. Bestcoder#5 1002

    Bestcoder#5 1002 Poor MitsuiTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (J ...

  10. c++ map、vector、list

    总体来说,使用map最简单.支持查找,获取下标不存在也不会出错 map是使用rbtree结构, vector是用连续获取内存的方法,类似hash结构.list是链表结构, 不支持下标. map: 支持 ...