学了一段时间的JS,唉,有的地方很注意细节,稍不留神IE就给你个“对象未定义的错误”,郁闷的是调试不到问题的出处。在几十行代码中尚有耐心去检查,但上了百行甚至几百行的就要发飙了。总结了一些JS常有的小错误:
1、小心最后一个逗号
如这段代码,注意最后一个逗号,IE会报语法错误,但语焉不详,你只能用人眼从so many行代码中扫描。其实错误却简单得要死~~我已经中了很多招这个错了,呜呜~~
<script>
var theObj = {
city : "ZhuHai",
state : "Single",
}
2、注意变量名不要和html的id重复
在JavaScript中不要使用跟HTML的id一样的变量名。如下代码:
<input type="button" id="TheButton">
<script>
var TheButton =document.getElementById('TheButton');
</script>
IE会报对象未定义的错误。我只能说:IE sucks.
3、字符串只替换第一个匹配
如下代码:
<script>
var fileName = "I am a girl".replace(" ","_");
</script>而实际上,结果是”I_am a girl“. 在JavaScript中,String.replace的第一个参数应该是正则表达式。所以,正确的做法是这样:
var newInput = document.createElement("input");
document.body.appendChild(newInput);
newInput.focus();
</script>
newInput.select();但是IE会报错(sucks again and again)。理由可能是当你执行fouce()的时候,元素尚未可用。因此,我们可以延迟执行:
var newInput = document.createElement("input");
newInput.id = "TheNewInput";
document.body.appendChild(newInput);
setTimeout(function(){
document.getElementById('TheNewInput').focus();
document.getElementById('TheNewInput').select();}, 10);
在实践中,JavaScript的陷阱还有很多很多,大多是由于解析器的实现不到位而引起。这些东西一般都不会在教科书中出现,只能靠开发者之间的经验分享。谢天谢地,我们生活在网络时代,很多碰到的问题,一般都可以在Google中找到答案。