第一次完整用web三劍客的坑

這學期學web(html,css,js)至上星期,一直遇到什麼坑,這個星期剛開始用js實現簡單計算器,就遇到了作爲新手遇到的幾個“經典”的坑,今天好好填一下:

1.html裏的特殊字符(實體符號)
先說不注意的後果,當你在編寫html或者在js裏使用innerHTML改變標籤內容時,在textcontent裏直接使用了<、>、-、”等等這些符號,那麼要麼瀏覽器會顯示出現異常(比如文段消失),要麼顯示正常,但解析時錯誤,要麼好像都正常,但沒準哪天哪裏就出錯了,那估計會找bug找到包紮。比如我寫了:
<div> 66666-66666 = 0 </div>
那麼在chrome瀏覽器上會變成 66666 - ,減號後會自動換行(顯示出錯)。正確的方法是使用對應的符號代碼代替,詳表見附錄。
特別注意:在js和html之間通過innerHTML等進行交互時,也是使用符號代碼,此時在js裏只是一段普通的字符串。比如:
html: <button id="but">&lt;</button>
js: if(\$("but").innerHTML == "&lt;") alert("&lt;");
那麼會輸出&lt;。
另外發現了chrome的一個bug:`出現減號且溢出div記得設置div white-space:nowrap;否則在減號處會自動換行(而不會溢出,無論是“&minus;”或“-”或“−”)’

2.當js裏改變(使用)html裏某些具體元素屬性時,由於html是按順序由上至下加載的,那麼如果僅僅將js放在head裏,而不加其他事件發生器,那麼他是不會生效的(因爲對應元素還沒產生)。這也就是常問的script放在head和body的區別,這時應該用onload等事件來觸發。
3.getElementsByTagName()得到的是一個標籤數組(Array類型)。就算只有一個也記得加[0]來代表第一個元素。
4.$符號。
①、首先它合法字符,可以用來表示變量名.
②、在正則表達式中,它可以匹配結尾:/sa$/.test(string)
匹配string字符串中的sa,比如string=’125sa’則匹配,string=’125sa21’則不匹配。
③、等於getElementById()的簡寫
$=function (id) { return (typeof (id)==’object’)?id:document.getElementById(id); };
其實就是一個自定義函數,用$只是簡單,其實用其它字符也是一樣的。
類似的:\$(document) \$(“div”).
\$(‘<div>’)是指創建一個DIV,用法:
var a = \$(‘<div>’).innerHTML(‘something’);
\$(‘p’).append(a);
關於③用法附兩個鏈接:
https://segmentfault.com/q/1010000000095673
http://blog.csdn.net/zm2714/article/details/8128747
注:此函數爲jQ裏的。
5.閉包。

附加一句web老師說的“”web箴言”:前端就是在事件發生器裏,用javascript,操作dom。
附錄:
http://www.cnblogs.com/kiter/archive/2011/08/05/2128309.html
http://www.ydcss.com/archives/495
http://www.haorooms.com/post/html_tsfh

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章