本文为原创!

昨天,同事遇到一个JavaScript(下称JS区别于JScript,虽然两者从各个方面讲都差不多,但毕竟存在不同点)的问题。一个页面的DIV现在需要其通过在网页加载时通过JavaScript的来对其进行操作。但是,在加载过程中,并没有达到目的,如对DIV在加载时隐藏(虽然可以直接用style进行隐藏,但现在需要用JS),而且提示是找不到对象,但对象是存在的。我当时也觉得其怪,语法和用法都是正确的,就是找不到原因。

今天我突然想起到“网页解析”这个术语,才发现我们可能语法和对象都没有错,而在错在在解析过程中出现的问题,但这个问题不仅仅是网页解析造成的。网页解析是从上往下解析的,对象也是从上往下生成的。JS也是在网页中被顺序解释的。这就涉及到一个JS块的存放位置的问题。如果JS块放在其操作的对象前,在网页解析过程中,JS先于对象被解析,在这个过程中,JS要去查找对象,但此时对象并没有生成;如果JS块放在其操作对象后,对象先于JS块被解析,则在解析JS块时一定能找到对象,也就不会存在找不到对象的问题了。于是我编写了一段测试代码如下,证明我的想法是正确的(可能早有这个知识点,只是我们没有注意到):

Read More →