作為一個新人,我在調試js的時候,比較習慣用alert(),把想查看的值,以彈窗的形式顯示出來,如下圖:
這段代碼的意思是想將id為testtx的控件的value值從原來的123變為changetx。
這段代碼運行的結果為
這個時候 可能就會想到function 是否被調用的問題,我之前可能就會這樣調試代碼:
會通過一堆 彈窗去查找錯誤的語句。
這段代碼執行之后就是 只彈出了1,如下圖:
發現錯誤語句是 var obj = document.getElementById("testtx");
然后思考為什么會錯。
錯誤的原因是由於 頁面是從上到下加載的,當執行到 var obj = document.getElementById("testtx"); 這條語句的時候,頁面上還沒有這個id為testtx的控件。
所以無法獲取控件,也就不能改變它的屬性值。
一般有兩種解決辦法:
第一:改變js標簽的位置,如圖:
運行結果 如圖:
第二:在js標簽中加如defer屬性,如圖:
運行結果為:
並不建議使用第二種方法,因為defer這個屬性對於瀏覽器的限制很嚴重,只支持部分ie瀏覽器。
以下是W3C關於defer的定義和用法。
============================================================我是分隔符===============================================================
言歸正傳,上面是使用alert()去發現問題點。下面介紹 使用console 發現問題點:
這是網上列舉的一些console的事件:
- console.log
- console.info
- console.error
- console.warn
- console.debug
- console.dirxml
- console.group和console.groupEnd
- console.assert
- console.count
- console.dir
- console.time和console.timeEnd
- console.profile和console.profileEnd
- console.timeLine和console.timeLineEnd
- console.trace
對於一個JAVA開發工程師,我覺得我們對於console的了解不需要像前端工程師那么多。可以通過使用console,看到我們想要的數據就可以了。
我覺得對於JAVA開發工程師比較常用的 就是console.log和console.error。
舉個例子,下面這段代碼:
在火狐瀏覽器中如何查看console呢?
點擊F12,打開開發者工具欄,然后點控制台。如下圖:
在谷歌瀏覽器中如何查看console呢?
同樣,點擊F12,打開開發者工具,然后點擊Console。如下圖:
再舉一個console.log和console.error的區別:
這段代碼 運行結果為:
總結:
個人比較推薦使用console去調試js,因為 如果數據量很大,可以把你想看的數據 都記錄在控制台上,如果使用alert()彈窗的形式,點擊確定后,就沒有了。
還有一個原因是,頁面加載是從上到下去加載的,js是單線程。當程序執行到alert的時候,頁面會彈窗,如果你不點擊,這個alert后面的內容是不被加載進來的。
如果你的頁面中含有ajax,這樣就容易產生一個本不該存在的時間差,可能會導致頁面無法正常顯示。所以更推薦使用console。
第一次寫,不知道 寫什么。希望越來越好。