首先,在这里很感谢w3cplus的群,不仅能从上面解决了很多问题,同时也学到很多技术。
然后这次讨论的是关于解决JS的一系列问题的,从中可以发现,平时写代码的时候,忽视了一些细节的东西。有个娃问,为什么我写的代码没执行?附上代码(可以自己试着运行一下):
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<!doctype html> <html lang="en"> <head> <title>测试<title> <script> var tops=5; while(tops>0){ for(var spins=0;spins<3;spins++){ alert("top is spinning!"); } } tops--; </script> </head> <body> </body> </html> |
发现其实也没什么问题,要把top–,写到while循环里面去。然后那娃改了,还是没反应。
这时候我也自己写了段测试代码(因为她是截图给我们看的),如下:
1 2 3 4 5 6 7 8 9 |
<script> var top=5; while(top>0){ for(var i=0;i<3;i++){ alert(i); }; top--; } </script> |
发现也没执行,然后在最外层加了个window.onload=function(){},就可以执行了,好奇怪的嘞。
这时候另一个人说,我写的代码也一样,为什么我的代码,写的一样,但是能运行?给出个:
1 2 3 4 5 6 7 |
var tops=5; while (tops>0) { for (var spins = 0; spins<3; spins++) { alert("tops is spinning"); } tops--; } |
却也真的能运行。不过这代码跟我那明显长的都一样,为什么我的要加onload呢,奇怪奇怪
后来去前端群问了下,黄上星调试了下代码,发现我的变量top指向window.o ,haoba ,top在JS中是保留字,我写demo为了简便,就定义了top,这是错误的。而那个成功运行的是正确的。这个问题解决了,但是,提问者的问题还没解决呢!
好吧,平时写代码,都忽略了调试这个环节,只关注有没有出错。然后我也去谷歌那里看了下,不应该出错啊,这回三个代码真心都一样了。在仔细看的时候,发现JS那里,谷歌解析的时候,竟然解析成了一堆字符串。然后仔细看了下代码,原来她的title忘记闭合了,天哪,竟然是这样的错误!
这些都是小细节,我们平时可能不太注意到,但这些也很重要,标签没闭合时页面有事也会换乱的,所以要拘小节~
暂无评论