【疑難雜症01】TypeError: alert is not a function


一、背景

  話說今天在調試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做為一個函數必然應該彈窗,結果報錯說不是函數,那么肯定被更改了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM