最近接的一个项目里需要修改 Javascript , 于是花了 3 个礼拜去写 Javascript , 发现了一些值得记录的东西.
一. 作用
Javascript 最终要实现的目标是控制 HTML 元素的显示, 所以它可以根据需求来更改 HTML 元素的显示样式和数据. 样式和数据可以是事先定义好或者从别的地方获取.
二. 语法
Javascript 会从头到尾顺序执行, 如果 Javascript 里控制的元素/样式/数据是在执行的语句的后面被定义, 则元素/样式/数据在这个时候会是 undefined 或 null . 也就是说它不会事先检查语句, 有错误只有在执行的时候才会发现.
Javascript 的变量有 Boolean/Number/String/Undefined/Null 和 Array/Object 这一些数据类型, 但是它们声明的时候全都使用 var 关键字, 变量里存储的数据的类型会随赋值而改变.
三. DOM
Javascript 控制元素/样式/数据时需要用到 DOM . 在 DOM 里 window 对象表示当前浏览器窗口, windows.document 表示当前窗口显示页面的 DOM 对象, window.parent.document 表示当前页面的上一层页面 DOM 对象, window.top.document 表示当前浏览器窗口最外层页面的 DOM 对象.
要从 DOM 获取元素, 可以使用 document.getElementById(“[ElementID]”)/document.getElementsByName(“[ElementName]”)/document.[FormName].[ElementName] 等几种方法, 需要注意的是, 当存在相同 Name 的元素时, 后两种方法得到的是一个 Array .
四. jQuery
jQuery 是使用 Javascript 开发的一个框架, 使用它可以简化开发工作.
我在项目里使用了基于 jQuery 的 jQuery UI 框架, 为的是实现 Modal Dialog , 我发现它的定义语句会在所有页面解析完后才执行, 这一点与上面第二点提到的按顺序执行不相同.
另外不管是 jQuery UI 里的 Dialog 还是 另一个 Javascript Modal Dialog 框架 Boxy , 在 Frameset 方式的页面里都弹不出来.
五. 兼容
IE10/IE9/IE8/IE7/IE6/Chrome/Firefox/Safari/Opear 这些浏览器对于支持的 HTML 标准都不尽相同, 所以就会遇到写好的语句会在不同的浏览器呈现不同的样式. 要解决这个问题只能是尽量遵行所有浏览器都支持的写法, 或都干脆针对不同的浏览器使用不同的写法. 但不管是哪种方式, 都搞的头都大了, 这太让人痛苦了, 前端的活真不是人做的!