javascript测试之道及Table操作
使用javascript操作表格?注意了,在ie6中,table对象下边并非tr,而是tbody,不管有没有显式声明这个Node
测试javascript无疑是一件麻烦的事情。尤其是使用ie,组出的错误简直让人摸不着头脑,跟直接说“你的程序出错了,但我不知道错在哪儿?”没有什么区别。因为给出的出错地方根本是找不到的!
相对IE来说,FIREFOX的错误报告机制相对来说要好很多。打开错误控制台,就可以看到具体错在哪儿了!因为它有代码引用,所以定位问题代码不成问题。
然而,如果一段代码在FIREFOX中运行正确,在IE中却有问题呢?这就郁闷了!看来只能靠ALERT()函数来查错了吧?然而ALERT()也不是万能的,它只能告诉你表象,你要有透过表象看本质的能力才行。
有更好的办法吗?当然有!不过这个办法大概只对操作HTML元素有效,它就是直接查看JAVASCRIPT运行后文档的源码是什么样子!具体做法:
添加一个TEXTAREA和一个按钮到页面上,使用document.documentElement.outerHTML属性,把列新后的文档源码显示到TEXTAREA中查看!
看到了改变后的源码,一般也就能发现问题所在了。
比如我今天碰到的一个问题。在表格中添加行,行中有几个TD,TD中有INPUT,在FIREFOX中运行正常,但是到了IE6就不行了,先是提示对象不存在,后来BLUEIDEA的高手指点说,CLASS是JAVASCRIPT的关键字,不能直接当作属性来使用,用className代替。
然而IE6下面运行还是有问题,函数调用正常,但不会显示效果!后来用了查看源码的办法,才知道IE6下面的TABLE下级子对象并不是TR,而是TBODY,不管你定义的表格是否存在TBODY,JAVASCRIPT总是认为它存在的,添加行也是添加到它里面!
因此,如果你要添加行,你要添加到table.children下面,像这样(假设没有thead的情形):
table.children[0]
而不能直接添加,像这样:
table.appendChild(obj)
否则只能添加到tbody外边去,显示不出来,还会产生错误。