第一次完整用web三剑客的坑

来源:互联网 发布:快递员怎么找淘宝客户 编辑:程序博客网 时间:2024/06/04 19:58

这学期学web(html,css,js)至上星期,一直遇到什么坑,这个星期刚开始用js实现简单计算器,就遇到了作为新手遇到的几个“经典”的坑,今天好好填一下:

1.html里的特殊字符(实体符号)
先说不注意的后果,当你在编写html或者在js里使用innerHTML改变标签内容时,在textcontent里直接使用了<、>、-、”等等这些符号,那么要么浏览器会显示出现异常(比如文段消失),要么显示正常,但解析时错误,要么好像都正常,但没准哪天哪里就出错了,那估计会找bug找到包扎。比如我写了:
<div> 66666-66666 = 0 </div>
那么在chrome浏览器上会变成 66666 - ,减号后会消失(显示出错)。正确的方法是使用对应的符号代码代替,详表见附录。
特别注意:在js和html之间通过innerHTML等进行交互时,也是使用符号代码,此时在js里只是一段普通的字符串。比如:
html: <button id="but">&lt;</button>
js: if(\$("but").innerHTML == "&lt;") alert("&lt;");
那么会输出&lt;。
另外好像发现了chrome的一个bug:
html: <button id="but2">&minus;</button>
js: if(\$("but2").innerHTML == "&minus;") alert("aa");
结果不会输出任何东西
2.当js里改变(使用)html里某些具体元素属性时,由于html是按顺序由上至下加载的,那么如果仅仅将js放在head里,而不加其他事件发生器,那么他是不会生效的(因为对应元素还没产生)。这也就是常问的script放在head和body的区别,这时应该用onload等事件来触发。
3.getElementsByTagName()得到的是一个标签数组(Array类型)。就算只有一个也记得加[0]来代表第一个元素。
4.$符号。
①、首先它合法字符,可以用来表示变量名.
②、在正则表达式中,它可以匹配结尾:/sa$/.test(string)
匹配string字符串中的sa,比如string=’125sa’则匹配,string=’125sa21’则不匹配。
③、等于getElementById()的简写
$=function (id) { return (typeof (id)==’object’)?id:document.getElementById(id); };
其实就是一个自定义函数,用$只是简单,其实用其它字符也是一样的。
类似的:\$(document) \$(“div”).
\$(‘<div>’)是指创建一个DIV,用法:
var a = \$(‘<div>’).innerHTML(‘something’);
\$(‘p’).append(a);
关于③用法附两个链接:
https://segmentfault.com/q/1010000000095673
http://blog.csdn.net/zm2714/article/details/8128747
注:此函数为jQ里的。
5.闭包。

附加一句web老师说的“”web箴言”:前端就是在事件发生器里,用javascript,操作dom。
附录:
http://www.cnblogs.com/kiter/archive/2011/08/05/2128309.html 或
http://www.ydcss.com/archives/495
http://www.haorooms.com/post/html_tsfh

原创粉丝点击