├── 2015 ├── 8 │ └── 2015年8月31日.markdown ├── 9 │ ├── 2015年9月10日.markdown │ ├── 2015年9月11日.markdown │ ├── 2015年9月12日.markdown │ ├── 2015年9月16日.markdown │ ├── 2015年9月17日.markdown │ ├── 2015年9月18日.markdown │ ├── 2015年9月19日.markdown │ ├── 2015年9月1日.markdown │ ├── 2015年9月22日.markdown │ ├── 2015年9月25日.markdown │ ├── 2015年9月26日.markdown │ ├── 2015年9月29日.markdown │ ├── 2015年9月3日.markdown │ ├── 2015年9月4日.markdown │ ├── 2015年9月5日.markdown │ ├── 2015年9月6日.markdown │ ├── 2015年9月7日.markdown │ ├── 2015年9月8日.markdown │ ├── 2015年9月9日.markdown │ └── img │ │ ├── 2015-9-22-1.jpg │ │ ├── 2015-9-22-2.jpg │ │ ├── 2015-9-22-2.png │ │ ├── 2015-9-22-3.jpg │ │ ├── 2015-9-25-1.png │ │ ├── 2015-9-25-2.png │ │ ├── 2015-9-25-3.jpg │ │ ├── 2015-9-25-4.jpg │ │ ├── 2015-9-25-5.jpg │ │ ├── 2015-9-26-1.jpg │ │ ├── 2015年9月16日-1.jpg │ │ └── gongchangmoshi.jpg ├── 10 │ ├── 2015年10月10日.markdown │ ├── 2015年10月15日.markdown │ ├── 2015年10月18日.markdown │ ├── 2015年10月19日.markdown │ ├── 2015年10月20日.markdown │ ├── 2015年10月26日.markdown │ ├── 2015年10月28日.markdown │ ├── 2015年10月29日.markdown │ ├── 2015年10月31日.markdown │ ├── 2015年10月8日.markdown │ ├── 2015年10月9日.markdown │ └── img │ │ ├── HTTP-2.jpg │ │ ├── HTTP.jpg │ │ ├── box-sizing.png │ │ ├── math函数-2.jpg │ │ ├── math函数.jpg │ │ └── random.jpg ├── 11 │ ├── 2015-11-16-1.jpg │ ├── 2015年11月11日.markdown │ ├── 2015年11月12日.markdown │ ├── 2015年11月13日.markdown │ ├── 2015年11月16日.markdown │ ├── 2015年11月17日.markdown │ ├── 2015年11月18日.markdown │ ├── 2015年11月19日.markdown │ ├── 2015年11月20日.markdown │ ├── 2015年11月22日.markdown │ ├── 2015年11月23日.markdown │ ├── 2015年11月24日.markdown │ ├── 2015年11月25日.markdown │ ├── 2015年11月27日.markdown │ ├── 2015年11月28日.markdown │ ├── 2015年11月29日.markdown │ ├── 2015年11月2日.markdown │ └── 2015年11月30日.markdown ├── 12 │ ├── 2015年12月10日.markdown │ ├── 2015年12月11日.markdown │ ├── 2015年12月13日.markdown │ ├── 2015年12月14日.markdown │ ├── 2015年12月16日.markdown │ ├── 2015年12月17日.markdown │ ├── 2015年12月18日.markdown │ ├── 2015年12月20日.markdown │ ├── 2015年12月21日.markdown │ ├── 2015年12月22日.markdown │ ├── 2015年12月23日.markdown │ ├── 2015年12月24日.markdown │ ├── 2015年12月26日.markdown │ ├── 2015年12月27日.markdown │ ├── 2015年12月28日.markdown │ ├── 2015年12月29日.markdown │ ├── 2015年12月3日.markdown │ ├── 2015年12月7日.markdown │ ├── 2015年12月9日.markdown │ └── img │ │ ├── 20100513052116804.jpg │ │ ├── 20100513052913196.jpg │ │ ├── 20100513071353897.gif │ │ ├── 20100513071354656.gif │ │ ├── 20100513071356624.gif │ │ ├── 20100513071356825.gif │ │ ├── 20100515092156201.gif │ │ ├── animation-pro.png │ │ ├── bs-btn.jpg │ │ ├── bs-code.jpg │ │ ├── bs-form-1.jpg │ │ ├── bs-form-2.jpg │ │ ├── bs-form-3.jpg │ │ ├── bs-form-4.jpg │ │ ├── bs-form.jpg │ │ ├── bs-hor-2.jpg │ │ ├── bs-hor.jpg │ │ ├── bs-text.jpg │ │ ├── bs-title.jpg │ │ ├── bs-tr.jpg │ │ ├── btn-2.jpg │ │ ├── btn.jpg │ │ ├── icon.jpg │ │ ├── repeating-linear-gradient.png │ │ ├── scale-x-y.png │ │ ├── scale-x.png │ │ ├── scale-y.png │ │ ├── skew-x-y.png │ │ ├── skew-x.png │ │ ├── skew-y.png │ │ ├── transition-suji.png │ │ └── transition-timing-function.png └── SUMMARY.md ├── 2016 ├── 1 │ ├── 2016年1月18日.markdown │ ├── 2016年1月25日.markdown │ ├── 2016年1月28日.markdown │ ├── 2016年1月29日.markdown │ ├── 2016年1月30日.markdown │ ├── 2016年1月3日.markdown │ ├── 2016年1月4日.markdown │ ├── 2016年1月5日.markdown │ ├── 2016年1月7日.markdown │ └── img │ │ ├── btn-1.jpg │ │ ├── btn-2.jpg │ │ ├── dropdown.jpg │ │ ├── form.jpg │ │ ├── json.jpg │ │ └── movejs.jpg ├── 2 │ ├── 2016年2月10日.markdown │ ├── 2016年2月11日.markdown │ ├── 2016年2月12日.markdown │ ├── 2016年2月13日.markdown │ ├── 2016年2月21日.markdown │ ├── 2016年2月22日.markdown │ ├── 2016年2月23日.markdown │ ├── 2016年2月25日.markdown │ ├── 2016年2月26日.markdown │ ├── 2016年2月27日.markdown │ ├── 2016年2月29日.markdown │ ├── 2016年2月3日.markdown │ ├── 2016年2月5日.markdown │ ├── 2016年2月6日.markdown │ ├── 2016年2月9日.markdown │ └── img │ │ ├── ajax-2.jpg │ │ ├── ajax-3.jpg │ │ └── ajax.jpg ├── 3 │ ├── 2016年3月10日.markdown │ ├── 2016年3月11日.markdown │ ├── 2016年3月12日.markdown │ ├── 2016年3月13日.markdown │ ├── 2016年3月14日.markdown │ ├── 2016年3月15日.markdown │ ├── 2016年3月16日.markdown │ ├── 2016年3月17日.markdown │ ├── 2016年3月18日.markdown │ ├── 2016年3月19日.markdown │ ├── 2016年3月20日.markdown │ ├── 2016年3月21日.markdown │ ├── 2016年3月22日.markdown │ ├── 2016年3月23日.markdown │ ├── 2016年3月24日.markdown │ ├── 2016年3月25日.markdown │ ├── 2016年3月28日.markdown │ ├── 2016年3月29日.markdown │ ├── 2016年3月2日.markdown │ ├── 2016年3月30日.markdown │ ├── 2016年3月31日.markdown │ ├── 2016年3月3日.markdown │ ├── 2016年3月5日.markdown │ ├── 2016年3月6日.markdown │ ├── 2016年3月7日.markdown │ ├── 2016年3月8日.markdown │ ├── 2016年3月9日.markdown │ └── img │ │ ├── align-content.png │ │ ├── align-items.png │ │ ├── align-self.png │ │ ├── ct_css_margin_collapsing_example_1.gif │ │ ├── ct_css_margin_collapsing_example_2.gif │ │ ├── ct_css_margin_collapsing_example_3.gif │ │ ├── ct_css_margin_collapsing_example_4.gif │ │ ├── flex-direction.png │ │ ├── flex-grow.png │ │ ├── flex-shrink.jpg │ │ ├── flex-wrap.jpg │ │ ├── flex1.png │ │ ├── justify-content.png │ │ ├── order.png │ │ └── pic1.png ├── 4 │ ├── 2016年4月11日.markdown │ ├── 2016年4月12日.markdown │ ├── 2016年4月13日.markdown │ ├── 2016年4月15日.markdown │ ├── 2016年4月18日.markdown │ ├── 2016年4月19日.markdown │ ├── 2016年4月1日.markdown │ ├── 2016年4月20日.markdown │ ├── 2016年4月21日.markdown │ ├── 2016年4月23日.markdown │ ├── 2016年4月24日.markdown │ ├── 2016年4月25日.markdown │ ├── 2016年4月26日.markdown │ ├── 2016年4月27日.markdown │ ├── 2016年4月28日.markdown │ ├── 2016年4月29日.markdown │ ├── 2016年4月3日.markdown │ ├── 2016年4月4日.markdown │ ├── 2016年4月5日.markdown │ ├── 2016年4月6日.markdown │ ├── 2016年4月7日.markdown │ └── img │ │ ├── SASS.jpg │ │ ├── css-01.jpg │ │ ├── ie.png │ │ ├── log.jpg │ │ ├── proto.jpg │ │ ├── prototype.png │ │ └── scope作用域.jpg ├── 5 │ ├── 2016年5月23日.markdown │ ├── 2016年5月26日.markdown │ ├── 2016年5月4日.markdown │ ├── 2016年5月5日.markdown │ ├── 2016年5月6日.markdown │ ├── 2016年5月7日.markdown │ └── 2016年5月9日.markdown └── SUMMARY.md ├── .gitattributes ├── .gitignore ├── CSS ├── CSS单位.md ├── CSS选择器.md ├── Directory.md ├── img │ ├── baseline.png │ ├── cssPx.jpg │ ├── css_selector.jpg │ ├── css_selector_2.jpg │ ├── css_selector_3.jpg │ ├── exANDch.jpg │ ├── line-box.png │ ├── line-height.png │ ├── line-height2.png │ └── vmaxANDvmin.jpg └── line-height与vertical-align.md ├── CodeLibrary ├── CSS3_Code.md ├── Directory.md ├── Nodejs新建服务器.md ├── ajax.md └── cookie.md ├── ECMAScript ├── ArrayBuffer.md ├── Class.md ├── Decorator.md ├── Directory.md ├── ES6函数扩展.md ├── ES6基础.md ├── ES6对象扩展.md ├── ES6数组扩展.md ├── ES6正则表达式扩展.md ├── Generator.md ├── Iterator和for...of循环.md ├── Module.md ├── Promise.md ├── Proxy.md ├── Reflect.md ├── Set与Map数据结构.md ├── Symbol.md ├── async.md ├── let与const命令.md ├── 字符串.md ├── 字符编码.md └── 解构赋值.md ├── HTML5 ├── Directory.md ├── SVG.md ├── WebSocket.md ├── img │ ├── TCP4.jpg │ ├── TCP5.png │ ├── asyncAndDefer.jpg │ ├── 浏览器渲染.jpg │ ├── 浏览器渲染_2.jpg │ └── 浏览器渲染_3.jpg ├── meta标签.md ├── 本地存储.md ├── 浏览器渲染.md └── 跨域.md ├── Java ├── Directory.md ├── Java基础.md ├── img │ ├── dataType.jpg │ ├── dataType01.jpg │ └── keyWord.jpg ├── 对象容器.md └── 继承.md ├── LICENSE ├── MOOC ├── C语言.md ├── Directory.md ├── IP地址.md ├── img │ ├── 1482024465706.png │ ├── IP地址.png │ ├── OSI与TCP-IP.png │ ├── kuaisu.jpg │ ├── maopao.jpg │ ├── shell-1.jpg │ ├── shell-2.jpg │ ├── shell-3.jpg │ ├── shell-4.jpg │ ├── shell-5.jpg │ ├── 二叉树遍历-2.jpg │ ├── 二叉树遍历.jpg │ ├── 广播地址.jpg │ ├── 机器指令-2.jpg │ ├── 机器指令.jpg │ ├── 机器数.jpg │ └── 计算机组成部件.jpg ├── 数据结构.md ├── 树与二叉树.md ├── 算法排序.md ├── 计算机导论.md └── 计算机网络.md ├── Nodejs ├── Buffer.md ├── Cluster.md ├── Directory.md ├── Error.md ├── EventEmitter.md ├── FileSystem.md ├── HTTP服务器.md ├── Stream.md ├── child_process.md ├── http模块.md ├── img │ ├── EventEmitter.jpg │ └── http-request.png ├── module.md ├── net.md ├── process.md ├── timer.md └── 基础笔记.md ├── README.md ├── React_Native ├── Directory.md ├── ReactNative.md ├── ReactNative样式.md └── Reactjs.md ├── SUMMARY.md ├── Todo.md ├── Vue ├── Directory.md ├── Vue.js.md └── Vue模块.md ├── book.json ├── javascript ├── Ajax.md ├── CommonJS.md ├── DOM对象.md ├── DOM样式.md ├── Directory.md ├── HTML网页API.md ├── JSON.md ├── JavaScript数值.md ├── Object对象.md ├── export、import与require.md ├── img │ ├── DataTransfer.jpg │ ├── element.jpg │ ├── rect.png │ └── what-is-webpack.png ├── npm.md ├── window对象.md ├── 二进制数据事件.md ├── 函数.md ├── 数据类型转换.md ├── 数组.md ├── 标准对象.md ├── 移动端事件.md └── 面向对象编程.md ├── styles └── website.css ├── tool ├── Directory.md ├── Git.md ├── atom.md ├── img │ └── what-is-webpack.png ├── reactRouter.md ├── reactjs.md ├── typings.md ├── webpack.md └── 正则表达式.md └── 后端开发 ├── Directory.md ├── Linux命令.md ├── MongoDB.md ├── Mongoose.md ├── MySQL-2.md ├── MySQL.md ├── MySQL笔记大全.md ├── img ├── Inner_Join.png ├── Left_Outer_Join.png ├── http.png ├── mysql.jpg ├── mysql_float.jpg ├── mysql_int.jpg ├── mysql_sq.jpg ├── mysql_str.jpg └── mysql_time.jpg ├── nginx.md └── 爬虫技术.md /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 使用方法: 2 | 3 | # /mtk/ 过滤整个文件夹 4 | 5 | # *.zip 过滤所有.zip文件 6 | 7 | # /mtk/do.c 过滤某个具体文件 8 | 9 | # gitignore还可以指定要将哪些文件添加到版本管理中: 10 | # !*.zip 11 | # !/mtk/one.txt 12 | 13 | #忽略自动生成的HTML文件目录 14 | 15 | /_book/ 16 | /node_modules/ 17 | .DS_Store 18 | test.js 19 | -------------------------------------------------------------------------------- /2015/10/2015年10月10日.markdown: -------------------------------------------------------------------------------- 1 | #2015年10月10日 2 | ##javascript 3 | 4 | - addEventListener是一个侦听事件并处理相应的函数。 5 | 6 | **语法** 7 | 8 | element.addEventListener(event, function, useCapture) 9 | 10 | >第一个参数是需要绑定的事件,第二个参数是触发事件后要执行的函数。而第三个参数默认值是false,表示在事件冒泡的阶段调用事件处理函数,如果参数为true,则表示在事件捕获阶段调用处理函数。 11 | 12 | **事件冒泡** 13 | 14 | 微软提出了名为事件冒泡(event bubbling)的事件流。事件冒泡可以形象地比喻为把一颗石头投入水中,泡泡会一直从水底冒出水面。也就是说,事件会从最内层的元素开始发生,一直向上传播,直到document对象。 15 | 16 | 因此上面的例子在事件冒泡的概念下发生click事件的顺序应该是p -> div -> body -> html -> document 17 | 18 | **事件捕获** 19 | 20 | 网景提出另一种事件流名为事件捕获(event capturing)。与事件冒泡相反,事件会从最外层开始发生,直到最具体的元素。 21 | 22 | 上面的例子在事件捕获的概念下发生click事件的顺序应该是document -> html -> body -> div -> p 23 | 24 | ```javascript 25 | document.getElementById("myP").addEventListener("click", function() { 26 | alert("你点击了 P 元素!"); 27 | }, false); 28 | 29 | document.getElementById("myDiv").addEventListener("click", function() { 30 | alert("你点击了 DIV 元素!"); 31 | }, false); 32 | 33 | document.getElementById("myP2").addEventListener("click", function() { 34 | alert("你点击了 P 元素!"); 35 | }, true); 36 | 37 | document.getElementById("myDiv2").addEventListener("click", function() { 38 | alert("你点击了 DIV 元素!"); 39 | }, true); 40 | ``` 41 | >详情查看[连接](http://sandbox.runjs.cn/show/lsxcibvm) 42 | 43 | **兼容** 44 | 要兼容旧版本的IE浏览器,可以使用IE的attachEvent函数。 45 | 46 | object.attachEvent(event, function) 47 | 48 | 两个参数与addEventListener相似,分别是事件和处理函数,默认是事件冒泡阶段调用处理函数,要注意的是,写事件名时候要加上"on"前缀("onload"、"onclick"等)。 49 | 50 | ##Python 51 | 52 | ```python 53 | #TempConvert.py 54 | val = input("请输入带温度表示符号的温度值(例如: 32C): ") 55 | if val[-1] in ['C','c']: 56 | f = 1.8 * float(val[0:-1]) + 32 57 | print("转换后的温度为: %.2fF"%f) 58 | elif val[-1] in ['F','f']: 59 | c = (float(val[0:-1]) - 32) / 1.8 60 | print("转换后的温度为: %.2fC"%c) 61 | else: 62 | print("输入有误") 63 | 64 | ``` 65 | 66 | >`%.2f`保留表示小数点后面两位。 67 | 68 | - 注释 69 | 70 | 方式: 71 | - 单行一`#`开头; 72 | - 多行一`'''`开头与结尾; 73 | -------------------------------------------------------------------------------- /2015/10/2015年10月15日.markdown: -------------------------------------------------------------------------------- 1 | #2015年10月15日 2 | ##Python 3 | 4 | - 数字类型的运算 5 | 6 | |运算符和运算函数 |操作含义| 7 | |-------- |--------- | 8 | |x+y |x与y之和| 9 | |x-y |x与y之差| 10 | |x*y |x与y之积| 11 | |x/y |x与y之商| 12 | |x//y| 不大于x与y之商的最大整数| 13 | |x%y |x与y之商的余数| 14 | |+x |x| 15 | |-x |x的负值| 16 | |x**y| x的y次幂| 17 | |abs(x)| x的绝对值| 18 | |divmod(x,y) |(x//y,x%y)| 19 | |pow(x,y)| x的y次幂| 20 | 21 | - 字符串处理方法 22 | 23 | |操作 | 含义 | 24 | |------------------------|-----------------------| 25 | |+| 连接| 26 | |* |重复| 27 | |< string>[ ]| 索引| 28 | |< string>[ : ]| 剪切| 29 | |len(< string>)| 长度| 30 | |< string>.upper()| 字符串中字母大写| 31 | |< string>.lower()| 字符串中字母小写| 32 | |< string>.strip()| 去两边空格及去指定字符| 33 | |< string>.split()| 按指定字符分割字符串为数组| 34 | |< string>.join()| 连接两个字符串序列| 35 | |< string>.find()| 搜索指定字符串| 36 | |< string>.replace()| 字符串替换| 37 | |for < var> in < string>|字符串迭代 | 38 | 39 | ```python 40 | 41 | # month.py 42 | months="JanFebMarAprMayJunJulAugSepOctNovDec" 43 | n=input("请输入月份数(1-12):") 44 | pos=(int(n)-1)*3 45 | monthAbbrev=months[pos:pos+3] 46 | print("月份数是"+monthAbbrev+".") 47 | 48 | 49 | ``` -------------------------------------------------------------------------------- /2015/10/2015年10月18日.markdown: -------------------------------------------------------------------------------- 1 | #2015年10月18日 2 | ##Python 3 | 4 | **元组** 5 | 6 | 元组是包含多个元素的类型,元素之间用逗号分割。 7 | 元组中各元素存在先后关系,可以通过索引访问元组 8 | 中元素。 9 | ```python 10 | >>> t2=123,123314,24,("hello","china") 11 | >>> print(t2[2]) 12 | 24 13 | >>> print(t2[3]) 14 | ('hello', 'china') 15 | >>> print(t2[3][1]) 16 | china 17 | >>> 18 | ``` 19 | 20 | **列表** 21 | - 列表(list)是有序的元素集合; 22 | - 列表元素可以通过索引访问单个元素; 23 | 24 | 列表与元组不同 25 | 列表大小没有限制,可以随时修改。 26 | 27 | **列表操作** 28 | 29 | |列表操作符| 操作符含义| 30 | |-------|---------------| 31 | |< list1 > + < list2>| 连接两个列表| 32 | |< list > * < 整数类型 > |对列表进行整数次重复| 33 | |< list > [< 整数类型 >] |索引列表中的元素| 34 | |len( < seq > ) |列表中元素个数| 35 | |< list >[ < 整数类型 > : |< 整数类型 >] 取列表的一个子序列 36 | |for < var > in < list > :| 对列表进行循环列举 37 | |< expr > in < list > |成员检查,判断< expr>是否在列表中| 38 | 39 | 40 | **列表相关方法** 41 | 42 | |方法 |方法含义| 43 | |-----|---------| 44 | |< list > . append ( x )| 将元素x增加到列表的最后| 45 | |< list > . sort ( ) |将列表元素排序| 46 | |< list > . reverse ( )| 将序列元素反转| 47 | |< list > . index ( )| 返回第一次出现元素x的索引值| 48 | |< list > . insert ( i, x )| 在位置i处插入新元素x| 49 | |< list > . count ( x ) |返回元素x在列表中的数量| 50 | |< list > . remove ( x )| 删除列表中第一次出现的元素x| 51 | |< list > . pop ( i ) |取出列表中位置i的元素,并删除它| 52 | 53 | > 补充:split()函数,将字符串拆分成一个列表,默认以空格分割。 54 | 55 | **math库中常用的数学函数** 56 | 57 | ![txt](img/math函数.jpg) 58 | ![txt](img/math函数-2.jpg) 59 | 60 | **random库中常用的函数** 61 | 62 | ![txt](img/random.jpg) 63 | 64 | **Pi圆周率计算函数** 65 | ```python 66 | # pi.py 67 | from random import random 68 | from math import sqrt 69 | from time import clock 70 | 71 | DARTS = 1200000 72 | hits = 0 73 | clock() 74 | for i in range(1,DARTS): 75 | x, y = random(), random() 76 | dist = sqrt(x**2 + y**2) 77 | if dist <= 1.0: 78 | hits = hits + 1 79 | pi = 4 * (hits/DARTS) 80 | print("Pi的值是 %s" % pi) 81 | print("程序运行时间是 %-5.5ss" % clock()) 82 | 83 | 84 | ``` 85 | 86 | ##慕课 87 | 当代人社会心理的三大特点 88 | - 渴望发言 89 | - 寻求联系 90 | - 得到庇护 91 | 92 | 社交关系 93 | - 强关系 94 | - 弱关系 95 | + 线上关系 96 | + 线下关系 97 | - 无关系 -------------------------------------------------------------------------------- /2015/10/2015年10月19日.markdown: -------------------------------------------------------------------------------- 1 | #2015年10月19日 2 | ##Ajax 3 | **创建 XMLHttpRequest 对象** 4 | 5 | variable=new XMLHttpRequest(); 6 | 7 | **Ajax调用示例** 8 | ```js 9 | //创建XHR对象 10 | var xhr=new XMLHttpRequest(); 11 | //处理返还数据 12 | xhr.onreadystatechange=function(callback){ 13 | if(xhr.readyState==4){ 14 | if((xhr.status>=200&&xhr.status<300)||xhr.status==304){ 15 | callback(xhr.responseText); 16 | }else{ 17 | alert("Request was unsuccessful:"+xhr.status); 18 | } 19 | } 20 | } 21 | //发送请求 22 | xhr.open('get','example.json',true); 23 | xhr.setRequestHeader('myHeader','myValue'); 24 | xhr.send(null); 25 | ``` 26 | 27 | - xhr.open(method,url[,async=true); 28 | 29 | method一般有`get`、`post`等方法。 30 | url[ :请求资源相对文档路径。 31 | async :是一个布尔值。 32 | 33 | - xhr.setRequestHeader('myHeader','myValue'); 34 | 35 | **XMLHttpRequest 对象的三个重要的属性** 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 60 | 61 | 62 | 63 | 64 | 65 | 66 |
属性描述
onreadystatechange存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
readyState 51 |

存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。

52 |
    53 |
  • 0: 请求未初始化
  • 54 |
  • 1: 服务器连接已建立
  • 55 |
  • 2: 请求已接收
  • 56 |
  • 3: 请求处理中
  • 57 |
  • 4: 请求已完成,且响应已就绪
  • 58 |
59 |
status

200: "OK"

404: 未找到页面

67 | 68 | ##慕课 69 | 70 | - 金牌用户策略 71 | - 信息平衡策略 72 | - 资源聚焦策略 -------------------------------------------------------------------------------- /2015/10/2015年10月20日.markdown: -------------------------------------------------------------------------------- 1 | #2015年10月20日 2 | ##Ajax 3 | 概念介绍 4 | - 运动HTML和css实现页面,表达信息。 5 | - 运行XMLHttpRequest和web服务器进行数据的异步交换。 6 | - 运行javascript操作DOM,实现动态局部刷新。 7 | 8 | 首先要构建XML对象 9 | 10 | ```js 11 | var xmlhttp; 12 | if (window.XMLHttpRequest) 13 | {// code for IE7+, Firefox, Chrome, Opera, Safari 14 | xmlhttp=new XMLHttpRequest(); 15 | } 16 | else 17 | {// code for IE6, IE5 18 | xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 19 | } 20 | ``` 21 | 22 | **`HTTP`一种无状态协议。** 23 | HTTP请求的七个步骤: 24 | - 建立TCP连接 25 | - Web浏览器向Web服务器发送请求命令 26 | - Web浏览器发送请求头信息 27 | - Web服务器应答 28 | - Web服务器发送应答头信息 29 | - Web服务器向浏览器发送数据 30 | - Web服务器关闭TCP连接 31 | 32 | **HTTP请求** 33 | ![txt](img/HTTP.jpg) 34 | 35 | **XHR发送请求** 36 | - open(method,url,async) 37 | - send(string) 38 | 39 | **XMLHttpRequest取得响应** 40 | ![txt](img/HTTP-2.jpg) 41 | 42 | **readyState属性** 43 | - 0:请求未初始化,open还没有调用。 44 | - 1:服务器连接已建立,open已经调用了。 45 | - 2:请求已接受,也就是接收到头信息。 46 | - 3:请求处理中,也就是接收到响应主体。 47 | - 4:请求已完成,且响应已就绪,也就是响应完成了。 48 | 49 | 监听代码: 50 | ```js 51 | var request=new XMLHttpRequest(); 52 | request.open("GET","get.php",true); 53 | request.send(); 54 | request.onreadystatechange=function{ 55 | if(request.readyState===4&&request.status===200){ 56 | //做一些事情 request.responseText 57 | } 58 | } 59 | ``` 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /2015/10/2015年10月26日.markdown: -------------------------------------------------------------------------------- 1 | #2015年10月26日 2 | ##Ajax 3 | - 无刷新数据获取 4 | - 用户注册、在线聊天室 5 | 6 | eval(str):可以把字符串解析成可识别的json数据。 7 | 8 | ```js 9 | function ajax(url, fnSucc, fnFaild) 10 | { 11 | //1.创建Ajax对象 12 | if(window.XMLHttpRequest) 13 | { 14 | var oAjax=new XMLHttpRequest(); 15 | } 16 | else 17 | { 18 | var oAjax=new ActiveXObject("Microsoft.XMLHTTP"); 19 | } 20 | 21 | //2.连接服务器(打开和服务器的连接) 22 | oAjax.open('GET', url, true); 23 | 24 | 25 | //3.发送 26 | oAjax.send(); 27 | 28 | //4.接收 29 | oAjax.onreadystatechange=function () 30 | { 31 | if(oAjax.readyState==4) 32 | { 33 | if(oAjax.status==200) 34 | { 35 | //alert('成功了:'+oAjax.responseText); 36 | fnSucc(oAjax.responseText); 37 | } 38 | else 39 | { 40 | //alert('失败了'); 41 | if(fnFaild) 42 | { 43 | fnFaild(); 44 | } 45 | } 46 | } 47 | }; 48 | } 49 | ``` 50 | 51 | [{a: 5, b: 7}, {a: 8, b: 12}] 52 | arr[0] ------[object Object] 53 | arr[0].a------5 54 | 55 | [{user: 'blue', pass: '123456'},{user: '张三', pass: '654321'},{user: '李四', pass: '789456'},{user: '王五', pass: '7777'}] 56 | aLi.innerHTML="user:"+data[i].user+";pass:"+data[i].pass+""; 57 | 58 | ##javascript 59 | 1. { } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数。 60 | 61 | >var LangShen = {"Name":"Langshen","AGE":"28"}; 62 | 63 | ```javascript 64 | var LangShen = { 65 | Name = function(){ 66 | return "LangShen"; 67 | }, 68 | Age = function(){ 69 | return "28"; 70 | } 71 | } 72 | ``` 73 | 74 | 2. [ ]中括号,表示一个数组,也可以理解为一个数组对象。 75 | var LangShen = [ "Name","LangShen","AGE","28" ]; 76 | 77 | 3. { } 和[ ] 一起使用,我们前面说到,{ } 是一个对象,[ ] 是一个数组,我们可以组成一个对象数组. 78 | 79 | ```javascript 80 | var LangShen = { "Name":"Langshen", 81 | "MyWife":[ "LuLu","26" ], 82 | "MySon":[{"Name":"Son1"},{"Name":"Son2"},{"Name":"Son3"}] 83 | } 84 | ``` 85 | 86 | >调用起来,也是一层一层访问,对象的属性用.(点)叠加,数组用 [下标] 来访问。 87 | 如:alert( LangShen.MySon[1].Name ) ; 88 | 89 | **eval函数的工作原理** 90 | 91 | eval函数会评估一个给定的含有JavaScript代码的字符串,并且试图去执行包含在字符串里的表达式或者一系列的合法的JavaScript语句。eval函数将把最后一个表达式或者语句所包含的值或引用作为返回值。 -------------------------------------------------------------------------------- /2015/10/2015年10月29日.markdown: -------------------------------------------------------------------------------- 1 | #2015年10月29日 2 | ##css 3 | 4 | **content-box**:此值为其默认值,其让元素维持W3C的标准Box Model,也就是说元素的宽度/高度(width/height)等于元素边框宽度(border)加上元素内边距(padding)加上元素内容宽度 /高度(content width/height)即:Element Width/Height = border+padding+content width/height。 5 | 6 | **border-box**:此值让元素维持IE传统的Box Model(IE6以下版本),也就是说元素的宽度/高度等于元素内容的宽度/高度。这里的content width/height包含了元素的border,padding,内容的width/height。即此处的内容宽度/高度=width /height-border-padding。 7 | 8 | ![txt](img/box-sizing.png) 9 | 10 | **z-index** 11 | 决定元素层次的属性,拥有较高堆叠数值的元素在上层。 12 | -------------------------------------------------------------------------------- /2015/10/2015年10月31日.markdown: -------------------------------------------------------------------------------- 1 | #2015年10月31日 2 | ##json 3 | 名称/值对组合中的名称写在前面(**在双引号中**),值对写在后面(**同样在双引号中**),中间用冒号隔开: 4 | 5 | {"firstName":"John"} 6 | 7 | var dataObj=eval("("+data+")");//转换为json对象 8 | 9 | >加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。 10 | 11 | ```json 12 | //示例1:此示例使用 JSON.parse 将 JSON 字符串转换为对象 13 | var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}'; 14 | var contact = JSON.parse(jsontext); 15 | document.write(contact.surname + ", " + contact.firstname + ", "+ contact.phone); 16 | 17 | ``` 18 | 19 | >建议使用JSON.parse(),eval()存在安全隐患。 20 | -------------------------------------------------------------------------------- /2015/10/2015年10月8日.markdown: -------------------------------------------------------------------------------- 1 | #2015年10月8日 2 | ##querySelector和querySelectorAll 3 | ```js 4 | document.querySelector("body");//放回body节点 5 | document.querySelector("#k");//返回id为k的节点 6 | document.querySelector("#k span");//返回id为k的节点下的第一个span节点 7 | document.querySelector("#k").querySelector("span");//返回id为k的节点下的第一个span节点 8 | 9 | document.querySelectorAll("li");//返回所用tagName为li的节点集合(NodeList) 10 | document.querySelectorAll("div .li");//返回class为li的div 11 | ``` 12 | 13 | >querySelectorAll 方法接收的参数是一个 **CSS 选择符**。而 getElementsBy 系列接收的参数只能是单一的*className*、*tagName* 和*name*。 14 | querySelectorAll比较耗费性能。 -------------------------------------------------------------------------------- /2015/10/2015年10月9日.markdown: -------------------------------------------------------------------------------- 1 | #2015年10月9日 2 | ##javascript 3 | 4 | ###javascript中的[ ] { }是什么意思 5 | ```js 6 | //用{}定义一组对像 7 | var obj = {a:1111,b:2222,c:'abc',d:function(){ 8 | alert('对像:d函数'); 9 | }}; 10 | alert('对像:'+obj.b);//调用对像b 11 | obj.d(); //调用对像d函数 12 | 13 | 14 | //[]是数组形式,{}是对象形式,都可以包含其他类型. 15 | var a= ["A","B",{a:1,b:2}]; 16 | //a[1] 取得的是B,a[2].b取得的是2; 17 | var s = {a:1,b:["A","B"]} 18 | //s.a取得的是1,s.b[1]取得的是A 19 | // 20 | // 21 | ////JSON中同时使用[]和{} 22 | var json = [{"arr1":{"a":123,"b":456},"arr2":{"a":789,"c":"abcdefg"}},{"arr1":{"a":"uuuuu","b":"oooo"},"arr2":{"a":"aaa9999","c":"abcdefg"}}]; 23 | alert('JSON1:'+json[0].arr2.a); 24 | alert('JSON2:'+json[1].arr2.a); 25 | ``` 26 | 27 | ###split() 28 | **split()** 方法用于把一个字符串分割成字符串数组。 29 | 语法:`stringObject.split(separator,howmany)`。 30 | 31 | ###join() 32 | **join()** 方法用于把数组中的所有元素放入一个字符串。 33 | 语法:`arrayObject.join(separator)`。 34 | 35 | 36 | ###indexOf() 37 | **indexOf()**方法可返回某个指定的字符串值在字符串中首次出现的位置。. 38 | 39 | ###substring() 40 | **substring()** 方法用于提取字符串中介于两个指定下标之间的字符。substring() 不接受负的参数。 41 | 42 | ###decodeURIComponent()与encodeURIComponent() 43 | 44 | `encodeURIComponent() `函数可把字符串作为 URI 组件进行编码。 45 | `decodeURIComponent() `函数可对` encodeURIComponent()` 函数编码的 URI 进行解码。 46 | 47 | ```js 48 | var test1="http://www.w3school.com.cn/My first/" 49 | 50 | document.write(encodeURIComponent(test1)+ "
") 51 | document.write(decodeURIComponent(test1)) 52 | 53 | ``` 54 | 55 | 输出 56 | 57 | ```js 58 | http%3A%2F%2Fwww.w3school.com.cn%2FMy%20first%2F 59 | http://www.w3school.com.cn/My first/ 60 | ``` -------------------------------------------------------------------------------- /2015/10/img/HTTP-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Niefee/My-study-records/61c3f9cab93ae3e0a26a83ef378fa7aeca62587f/2015/10/img/HTTP-2.jpg -------------------------------------------------------------------------------- /2015/10/img/HTTP.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Niefee/My-study-records/61c3f9cab93ae3e0a26a83ef378fa7aeca62587f/2015/10/img/HTTP.jpg -------------------------------------------------------------------------------- /2015/10/img/box-sizing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Niefee/My-study-records/61c3f9cab93ae3e0a26a83ef378fa7aeca62587f/2015/10/img/box-sizing.png -------------------------------------------------------------------------------- /2015/10/img/math函数-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Niefee/My-study-records/61c3f9cab93ae3e0a26a83ef378fa7aeca62587f/2015/10/img/math函数-2.jpg -------------------------------------------------------------------------------- /2015/10/img/math函数.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Niefee/My-study-records/61c3f9cab93ae3e0a26a83ef378fa7aeca62587f/2015/10/img/math函数.jpg -------------------------------------------------------------------------------- /2015/10/img/random.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Niefee/My-study-records/61c3f9cab93ae3e0a26a83ef378fa7aeca62587f/2015/10/img/random.jpg -------------------------------------------------------------------------------- /2015/11/2015-11-16-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Niefee/My-study-records/61c3f9cab93ae3e0a26a83ef378fa7aeca62587f/2015/11/2015-11-16-1.jpg -------------------------------------------------------------------------------- /2015/11/2015年11月11日.markdown: -------------------------------------------------------------------------------- 1 | #2015年11月11日 2 | ##学习资料 3 | 4 | 入门三板斧: 5 | 6 | http://www.cnblogs.com/jikey/p/3613082.html 7 | 8 | 入门看这个系列。 9 | 10 | http://pan.baidu.com/s/1pJqJvAV 11 | 12 | 入门JS视频。 13 | 14 | http://pan.baidu.com/s/1o6DTGro 15 | http://pan.baidu.com/s/1qWPntdq 16 | 17 | 入门HTML5视频 18 | 19 | http://pan.baidu.com/s/1bnlHT3x 20 | 21 | 前端开发 资料都在这里边。 22 | 23 | http://t.cn/Rv38Wg7 24 | 25 | API参考手册大全 26 | 27 | http://www.cnblogs.com/sb19871023/p/3894452.html 28 | 29 | 前端知识结构 30 | 31 | http://pan.baidu.com/s/1pJqJvAV 32 | 33 | 这个视频我当时花了一年的时间看完看懂,看完视频里边的代码敲了2边,前前后后2年。 34 | 35 | http://www.cnblogs.com/jikey/p/3613082.html 36 | 37 | 这个系列是重点,看完在看我博客,准备面试,作品什么的。 38 | 39 | http://www.cnblogs.com/jikey 40 | 41 | -------------------------------------------------------------------------------- /2015/11/2015年11月12日.markdown: -------------------------------------------------------------------------------- 1 | #2015年11月12日 2 | ##javascript 3 | 4 | getElementById 5 | 6 | - FF下直接使用ID存在问题 7 | - 引入document.getElementById() 8 | - document.getElementById在任何浏览器下均可以使用 9 | 10 | 网站换肤 11 | 12 | - 任何标签都可以加ID,包括link 13 | - 任何标签的属性,都可以修改 14 | - HTML里怎样写 ,javascript就怎样写 15 | 16 | 在DOM中,class要写成className; 17 | 18 | 字面量:看到的东西,自然知道什么。12、"abc"。 19 | 20 | 变量:var a=? 21 | 22 | style和className 23 | 24 | - 元素.style.属性=xxx是修改行间样式 25 | - 之后再修改className不会有效果 26 | 27 | **提取行间样式** 28 | 提取事件 29 | 30 | - 为元素添加事件 31 | + 时间和其他属性一样,可以用javascript添加; 32 | + window.onload的意义; 33 | + 行为、样式、结构三者分离; 34 | 35 | >元素的样式与属性,一次只能设置一次。 36 | 37 | 或者一组元素 38 | 39 | - getElementById 40 | + 数组的使用 41 | + 里面的 42 | 43 | -------------------------------------------------------------------------------- /2015/11/2015年11月13日.markdown: -------------------------------------------------------------------------------- 1 | #2015年11月13日 2 | ##HTML&CSS 3 | **CSS content内容生成技术以及应用** 4 | 5 | ```css 6 | h2:before { 7 | content: "我是额外文字!"; 8 | } 9 | ``` 10 | 11 | >h2标签前面添加文字; 12 | 13 | ```html5 14 | a.content:after { 15 | content: attr(href); 16 | } 17 | 此标签的href值是: 18 | ``` 19 | 20 | >结果:"此标签的href值是:http ://www.zhangxinxu.com/" ; 21 | 22 | >content属性的值除了使用文本值外,还可以使用标签的一些属性值,方法是attr() 23 | 24 | **HTMLElement.dataset** 25 | 26 | 自定义的数据属性名称是以 data- 开头的。 27 | 这种方式通过访问一个元素的`dataset` 属性来存取 `data-*` 自定义属性的值。这个 dataset 属性是HTML5 JavaScript API的一部分,用来返回一个所有选择元素 data- 属性的DOMStringMap对象。 28 | 29 | 使用这种方法时,不是使用完整的属性名,如 `data-uid` 来存取数据,应该去掉`data-` 前缀。 30 | 31 | 带连字符连接的名称在使用的时候需要命名驼峰化,即大小写组合书写. 32 | 33 | `data-meal-time`,则我们要获取相应的值可以使用:`expenseday2.dataset.mealTime` 34 | 35 | ```js 36 |
码头
37 | s 49 | ``` -------------------------------------------------------------------------------- /2015/11/2015年11月16日.markdown: -------------------------------------------------------------------------------- 1 | #2015年11月16日 2 | ##JavaScript 3 | `this`当前发生事件的元素. 4 | 5 | JavaScript组成: 6 | - ECMAscript 翻译\核心\解析器 7 | - DOM 8 | - BOM 9 | 10 | 11 | **变量的类型**: 12 | 13 | number,string,boolean,,function,object,undefined 14 | 15 | `typeof`可以返还变量的类型; 16 | 17 | `parseInt()`把字符串转换成字符串,遇到不是数字的东西,就会停止,把前面的内容返还出去. 18 | 19 | NaN与任何数字相加,都等于NaN. 20 | 21 | NaN+a=NaN; 22 | 23 | 用`isNaN()`可以检测是否是NaN; 24 | 25 | `parseInt()`只能转换成整数,`parseFloat()`可以转换成小数. 26 | 27 | **作用域与闭包** 28 | 局部变量:在函数内部的使用 29 | 30 | 全局变量:在所有地方都能使用 31 | 32 | 33 | 子函数使用父函数的变量 34 | 35 | ```js 36 | function aa(){ //父函数 37 | var a=12; 38 | function bb(){ //子函数 39 | alert(a); 40 | } 41 | bb(); 42 | } 43 | aa(); 44 | 45 | ``` 46 | 47 | 命名规范 48 | ![](2015-11-16-1.jpg) 49 | 50 | **运算符** 51 | 52 | %取模 53 | 12%5=2; 54 | 55 | `&&`:与; 56 | `||`:或; 57 | `!`:否; 58 | 59 | ```js 60 | switch(value){ 61 | case value1: 62 | 语句1 63 | break; 64 | case value2: 65 | 语句2 66 | break; 67 | ...... 68 | default: 69 | 语句n; 70 | } 71 | ``` 72 | 73 | `break`:把整个循环都终端; 74 | `continue`:跳过本次循环; 75 | 76 | 真:true,非零数字,非空字符串,非空对象 77 | 假:false,数字0,空字符串,null,空对象,undefined 78 | 79 | **JSON** 80 | ```js 81 | var json={a:12,b:3,c:43}; 82 | var arr=[12,3,43]; 83 | alert(json['a']); 84 | alert(arr[0]); 85 | 86 | //循环json 87 | for(var i in json){ 88 | alert(json[i]); 89 | } 90 | 91 | ``` 92 | 93 | ##python 94 | **常用编码** 95 | Unicode 96 | - 跨语言、跨平台进行文本转换和处理 97 | - 对每种语言中字符设定统一且唯一的二进制编码 98 | - 每个字符两个字节长 99 | - 65536(256*256) 个字符的编码空间 100 | - “严”:Unicode的十六进制数为4E25 101 | 102 | UTF-8编码 103 | - 可变长度的Unicode的实现方式 104 | - “严”:十六进制数为E4B8A5 105 | 106 | GBK编码 107 | - 双字节编码 108 | - 举例 109 | 110 | 111 | -------------------------------------------------------------------------------- /2015/11/2015年11月17日.markdown: -------------------------------------------------------------------------------- 1 | #2015年11月17日 2 | ##JavaScript 3 | 4 | 一个函数只返回一种类型的值; 5 | 6 | arguments 可变参 不定参(参数可变,个数必定) 7 | 8 | `argument.length`可以返还函数的个数值; 9 | 10 | **取非行间样式** 11 | 12 | `getComputedStyle`是一个可以获取当前元素所有**最终使用的CSS属性值**。返回的是一个CSS样式声明对象`([object CSSStyleDeclaration])`,只读。 13 | 14 | var style = window.getComputedStyle("元素", "伪类"); 15 | >第二个参数“伪类”是必需的(如果不是伪类,设置为null),不过现在嘛,不是必需参数了。 16 | 17 | oDivStyle=oDiv.currentStyle||getComputedStyle(oDiv); 18 | >兼容IE,FF,Chrome. 19 | 20 | 复合样式:background,border 21 | 22 | 单一样式:width,height, 23 | 24 | ###数组 25 | 26 | 数组方法 27 | 28 | - 添加 29 | + push(元素),将一个或多个新元素添加到数组结尾,并返回数组新长度 30 | + unshift(元素),将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度 31 | 32 | - 删除 33 | + pop(),移除最后一个元素并返回该元素值 34 | + shift(),移除最前一个元素并返回该元素值,数组中元素自动前移 35 | 36 | - 插入,删除 37 | + splice(起点,删除长度,添加元素) 38 | 语法:splice(insertPos,0,[item1[, item2[, . . . [,itemN]]]]) 39 | 40 | - 连接 41 | + concat(),a.concat(b); 42 | + join(),用指定连接符连接数组每一个元素. 43 | 44 | - 排序 45 | + sort(), `arr.sort()`; 46 | 47 | ```js 48 | //比较函数 49 | arr.sort(function(n1,n2){ 50 | if(n1n2){ 53 | return 1; 54 | }else{ 55 | return 0; 56 | } 57 | }) 58 | ``` 59 | 60 | ###定时器 61 | 62 | `setInterval()`,每隔指定时间执行一次,`clearInterval()`取消定时器. 63 | 64 | `setTimeout()`,延迟指定时间执行一次,使用`clearTimeout()`取消定时器. 65 | 66 | `charAt()`:获取字符串上某位的内容. 67 | 68 | 获取时间对象: 69 | `getHours()`:时; 70 | `getMinutes()`:分; 71 | `getSeconds()`:秒; 72 | `getFullYear()`:年; 73 | `getMonth()`:月,这个要加"1"; 74 | `getDate()`:日; 75 | `getDay()`:星期; 76 | -------------------------------------------------------------------------------- /2015/11/2015年11月18日.markdown: -------------------------------------------------------------------------------- 1 | #2015年11月18日 2 | ##JavaScript 3 | 4 | offsetLeft:综合考虑 所有因素,获取物体的左边距. 5 | obj.offsetLeft 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置. 6 | 如果当前元素的父级元素中有CSS定位(position为absolute或relative),offsetParent取最近的那个父级元素。 7 | 8 | offsetWidth = width + padding + border 9 | 10 | offsetHeight = height + padding + border 11 | 12 | 13 | width是字符串;offsetWidth是数字; 14 | style.left是**读写**的,offsetLeft是**只读**的,所以要改变div的位置,只能修改style.left。 15 | 16 | ###DOM 17 | 18 | `childNodes`:子节点,包括文本节点与元素节点. 19 | 20 | `nodeType`:文本节点的类型; 21 | >1:元素节点;3:文本节点; 22 | 23 | `children`:非标准属性; 24 | 25 | `parentNode`:父节点; 26 | 27 | `offsetParent`:获取元素用来定位的父级` 28 | 29 | `firstElementChild`:第一个元素节点; 30 | 31 | `firstChild`:低版本指元素节点,高版本浏览器指文本节点; 32 | 33 | >`lastChild1`与`lastElementChild`,`nextSibling`与`nextElementSibling`,`previousSibling`与`previousElementSibling`; 34 | 35 | **元素属性操作** 36 | 37 | - oDiv.style.display="block"; 38 | - oDiv.style.["display"]="block"; 39 | - DOM方式 40 | 41 | DOM方式操作元素属性 42 | 43 | - 获取:getAttribute(名称) 44 | - 设置:setAttribute(名称,值) 45 | - 删除:removeAttribute(名称) 46 | 47 | ```js 48 | alert(oTxt.getAttribute("value")) 49 | 50 | oTxt.setAttribute("value","hello world"); 51 | 52 | oTxt.removeAttribute("value"); 53 | ``` 54 | 55 | 56 | **获取指定class元素** 57 | 58 | ```js 59 | function getByClass(oParent,sClass){ 60 | var aResult=[]; 61 | var aEle=oParent.getElementsByTagName("*"); 62 | for(var i=0;i 10 | 29 | ``` 30 | 31 | ###各浏览器下 scrollTop的差异 32 | 33 | **IE6/7/8:** 34 | 对于没有doctype声明的页面里可以使用 document.body.scrollTop 来获取 **scrollTop高度 ;** 35 | 对于有doctype声明的页面则可以使用 document.documentElement.scrollTop; 36 | **Safari:** 37 | safari 比较特别,有自己获取scrollTop的函数 : window.pageYOffset ; 38 | **Firefox:** 39 | 火狐等等相对标准些的浏览器就省心多了,直接用 document.documentElement.scrollTop ; 40 | 41 | 42 | **各参数细分** 43 | 44 | `clientHeight`是内容可视区域的高度,也就是说页面浏览器中可以看 45 | 到内容的这个区域的高度。 46 | 47 | `scrollTop`就等于这部分“不可见的内容”的高度。 48 | 49 | 网页可见区域宽:document.body.clientWidth; 50 | 网页可见区域高:document.body.clientHeight; 51 | 网页可见区域宽:document.body.offsetWidth;(包括边线的宽) 52 | 网页可见区域高:document.body.offsetHeight;(包括边线的宽) 53 | 网页正文全文宽:document.body.scrollWidth; 54 | 网页正文全文高:document.body.scrollHeight; 55 | 网页被卷去的高:document.body.scrollTop; 56 | 网页被卷去的左:document.body.scrollLeft; 57 | 网页正文部分上:window.screenTop; 58 | 网页正文部分左:window.screenLeft; 59 | 屏幕分辨率的宽:window.screen.width; 60 | 屏幕分辨率的高:window.screen.height; 61 | 屏幕可用工作区宽度:window.screen.availWidth; 62 | 屏幕可用工作区高度:window.screen.availHeight; 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /2015/11/2015年11月24日.markdown: -------------------------------------------------------------------------------- 1 | #2015年11月24日 2 | ##javascript 3 | 在多物体运动框架中,所有东西都不能共用; 4 | 5 | offsetWidth=width+padding+border+margin; 6 | `offsetWidth`获取的是盒模型宽度; 7 | 8 | `*.style.width`读取行间样式中设置的宽度; 9 | 10 | ```javascript 11 | //多物体运动框架 12 | function startMove(obj,attr,iTarget){ 13 | 14 | clearInterval(obj.timer); 15 | 16 | obj.timer=setInterval(function(){ 17 | 18 | 19 | var cur=0; 20 | if(attr=='opacity'){ 21 | cur=Math.round(parseFloat(getStyle(obj,attr))*100); 22 | }else{ 23 | cur=parseInt(getStyle(obj,attr)); 24 | } 25 | var speed=(iTarget-cur)/6 26 | speed=speed>0?Math.ceil(speed):Math.floor(speed); 27 | 28 | if (cur==iTarget) { 29 | clearInterval(obj.timer); 30 | }else{ 31 | if(attr=='opacity'){ 32 | obj.style.opacity=(cur+speed)/100; 33 | obj.style.filter='alpha(opacity:'+(cur+speed)+');'; 34 | }else{ 35 | obj.style[attr]=cur+speed+'px'; 36 | } 37 | 38 | } 39 | },30); 40 | } 41 | 42 | function getStyle(obj,name){ 43 | if (obj.currentStyle) { 44 | return obj.currentStyle[name];//用点号会怎样 45 | }else{ 46 | return getComputedStyle(obj,false)[name]; 47 | } 48 | } 49 | ``` 50 | 51 | ##开发方法 52 | **敏捷开发** 53 | 54 | - 以人为核心、迭代、循序渐进 55 | - 针对传统的瀑布开发模式的弊端 56 | - 分为多个相互联系、独立运行的小项目 57 | - 软件一直处于可使用状态 58 | 59 | **敏捷开发更符合软件开发的规律** 60 | 61 | - 软件---植物 62 | - 自底向上 63 | - 逐步有序 64 | - 遵循软件客观规律, 65 | - 迭代增量开发 -------------------------------------------------------------------------------- /2015/11/2015年11月25日.markdown: -------------------------------------------------------------------------------- 1 | #2015年11月25日 2 | ##Python 3 | 图素法和像素法的区别: 4 | 图形---矢量图 5 | 图像---像素图 6 | 7 | 图形用户界面 8 | GUI 9 | 10 | Tkinter--Python 标准GUI 11 | 12 | Graphics--基于Tkinter扩展 13 | 14 | Turtle--Python内置的图形库 15 | 16 | 17 | -------------------------------------------------------------------------------- /2015/11/2015年11月27日.markdown: -------------------------------------------------------------------------------- 1 | #2015年11月27日 2 | ##javascript 3 | **json** 4 | json循环用`for in `的方式。 5 | 6 | ```json 7 | var json={a:12,b=15}; 8 | for(var i in json){ 9 | alert(a+'='+json[i]) 10 | } 11 | ``` 12 | 13 | **完美运动框架** 14 | 15 | ```js 16 | function getStyle(obj, name) 17 | { 18 | if(obj.currentStyle) 19 | { 20 | return obj.currentStyle[name]; 21 | } 22 | else 23 | { 24 | return getComputedStyle(obj, false)[name]; 25 | } 26 | } 27 | 28 | 29 | function startMove(obj, json, fnEnd) 30 | { 31 | clearInterval(obj.timer); 32 | obj.timer=setInterval(function (){ 33 | var bStop=true; //假设:所有值都已经到了 34 | 35 | for(var attr in json) 36 | { 37 | var cur=0; 38 | 39 | if(attr=='opacity') 40 | { 41 | cur=Math.round(parseFloat(getStyle(obj, attr))*100); 42 | } 43 | else 44 | { 45 | cur=parseInt(getStyle(obj, attr)); 46 | } 47 | 48 | var speed=(json[attr]-cur)/6; 49 | speed=speed>0?Math.ceil(speed):Math.floor(speed); 50 | 51 | if(cur!=json[attr]) 52 | bStop=false; 53 | 54 | if(attr=='opacity') 55 | { 56 | obj.style.filter='alpha(opacity:'+(cur+speed)+')'; 57 | obj.style.opacity=(cur+speed)/100; 58 | } 59 | else 60 | { 61 | obj.style[attr]=cur+speed+'px'; 62 | } 63 | } 64 | 65 | if(bStop) 66 | { 67 | clearInterval(obj.timer); 68 | 69 | if(fnEnd)fnEnd(); 70 | } 71 | }, 30); 72 | } 73 | ``` 74 | 75 | 运动框架演变过程 76 | 77 | - startMove(iTarget) 运动框架 78 | - startMove(obj,iTarget) 多物体 79 | - startMove(obj,attr,iTarget) 任意值 80 | - startMove(obj,attr,iTarget,fn) 链式运动 81 | - startMove(obj,json) 多值运动 82 | - startMove(obj,json,fn) 完美运动框架 83 | 84 | 85 | -------------------------------------------------------------------------------- /2015/11/2015年11月28日.markdown: -------------------------------------------------------------------------------- 1 | #2015年11月28日 2 | ##javascript 3 | 4 | alert(document.childNodes[1].tagName); 5 | //HTML 6 | 7 | `document`是文件的最顶层标签,一般隐藏。 8 | 9 | 事件处理函数 10 | 11 | ```js 12 | //IE 13 | //alert(event.clientX+','+event.clientY); 14 | // 15 | //FF 16 | //alert(ev.clientX+','+ev.clientY); 17 | // 18 | // 19 | //兼容写法 20 | oEvent=ev||event; 21 | 22 | 23 | ``` 24 | 25 | 事件冒泡 26 | 27 | 冒泡从最底层的标签开始,然后一层层向上触发事件。 28 | 29 | oEvent.cancelBubble=true;//取消事件冒泡。 30 | 31 | 32 | **onmousemove** 33 | 34 | scrollTop=document.documentElement.scrollTop||document.body.scrollTop; 35 | 36 | 封装函数 37 | 38 | ```javascript 39 | function getPos(ev){ 40 | var scrollTop=document.documentElement.scrollTop||document.body.scrollTop; 41 | var scrollLeft=document.documentElement.scrollLeft||document.body.scrollLeft; 42 | 43 | return{x:ev.clientX+scrollLeft,y:ev.clientY+scrollTop}; 44 | 45 | } 46 | ``` 47 | 48 | **onkeydown、onkeyup** 49 | 50 | ```javascript 51 | document.onkeyup=function (ev) 52 | { 53 | var oEvent=ev||event; 54 | 55 | alert(oEvent.keyCode);//弹出按键字母对应的ASCII表的数字。 56 | }; 57 | 58 | ``` 59 | 60 | `oEvent.keyCode==13 && oEvent.ctrlKey`:回车加`ctrl`触发事件函数; 61 | 62 | `oEvent.keyCode==13 && oEvent.keyCode==16`在浏览器中没有反应; 63 | 64 | >还有`shiftKey`,`altKey`,用来确定按键有没有被按下去。 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /2015/11/2015年11月29日.markdown: -------------------------------------------------------------------------------- 1 | #2015年11月29日 2 | ##javascript 3 | 4 | **默认行为** 5 | 6 | ```javascript 7 | document.oncontextmenu=function(ev){ 8 | var oEvent=ev||event; 9 | var oDiv=document.getElementById('div1'); 10 | oDiv.style.display='block'; 11 | oDiv.style.left=oEvent.clientX+'px'; 12 | oDiv.style.top=oEvent.clientY+'px'; 13 | 14 | return false;//阻止默认事件; 15 | } 16 | ``` 17 | 18 | >阻止默认的右键菜单,弹出自定义菜单; 19 | 20 | **事件绑定** 21 | 22 | >添加事件会相会覆盖; 23 | 24 | `attachEvent(事件名,函数)`:IE10一下支持,对应的接触绑定函数是`detachEvent(事件名,函数)`; 25 | 26 | `addEventListener(事件名,函数,false)`:支持火狐、Chrome,接触绑定函数是`removeEventListener(事件名,函数,false)`; 27 | 28 | **事件捕获** 29 | 30 | //只适用于IE; 31 | `setCapture()`:事件捕获函数; 32 | 事件就是把时间都集中到一个对象(例如按钮)中处理; 33 | 34 | `releaseCapture()`:取消事件捕获; 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /2015/11/2015年11月2日.markdown: -------------------------------------------------------------------------------- 1 | #2015年11月2日 2 | ##Ajax 3 | `push()` 方法可向数组的末尾添加一个或多个元素,并返回新的长度。 4 | 5 | ```js 6 | 7 | var arr = new Array(3) 8 | arr[0] = "George" 9 | arr[1] = "John" 10 | arr[2] = "Thomas" 11 | 12 | document.write(arr + "
") 13 | document.write(arr.push("James") + "
") 14 | document.write(arr) 15 | 16 | 17 | //输出 18 | George,John,Thomas 19 | 4 20 | George,John,Thomas,James 21 | ``` 22 | 23 | `join()` 方法用于把数组中的所有元素放入一个字符串。 24 | 元素是通过指定的分隔符进行分隔的。 25 | 26 | ```js 27 | var arr = new Array(3) 28 | arr[0] = "George" 29 | arr[1] = "John" 30 | arr[2] = "Thomas" 31 | 32 | document.write(arr.join(".")) 33 | 34 | //输出: 35 | George.John.Thomas 36 | ``` 37 | 38 | Ajax的POST请求 39 | ```js 40 | xhr.setRequestHeader("Content-Type",application/json); 41 | xhr.send(json.stringify({ 42 | keyword:'c', 43 | other:'test' 44 | })); 45 | ``` 46 | 47 | Ajax超市设置 48 | ```js 49 | xhr.timeout=5000; 50 | xhr.ontimeout=function(){ 51 | console.log('timeout!'); 52 | } 53 | ``` -------------------------------------------------------------------------------- /2015/11/2015年11月30日.markdown: -------------------------------------------------------------------------------- 1 | #2015年11月30日 2 | ##Ajax 3 | 4 | 阻止缓存,加上时间毫秒数`new Date().getTime()`。 5 | 6 | 读取的是字符串,通过`eval()`函数转成javascript能识别的语句。 7 | 8 | 9 | get:通过网址,容量小; 10 | 11 | post:不通过网址,容量大(2G),安全性好一点; 12 | 13 | 最安全是使用HTTPS; 14 | 15 | 网址的长度是有限的, 16 | 17 | ``` 18 | var a=12; 19 | alert(a)=window.alert(window.a);//全局变量是window上的一个属性。 20 | 21 | ``` 22 | 23 | 用没有定义的变量---报错; 24 | 用没有定义的属性---underfined 25 | 26 | 27 | -------------------------------------------------------------------------------- /2015/12/2015年12月10日.markdown: -------------------------------------------------------------------------------- 1 | #2015年12月10日 2 | ##jQuery 3 | 4 | javascript对大小写敏感(关键字、函数名、变量名等),标识符的首字符必须是**字母**、**下划线 `_`**或者**`$`符**,其后的字符可以含**数字** 5 | 6 | 7 | **匿名函数自执行** 8 | 9 | ```js 10 | 11 | (function(){ 12 | var a=10; 13 | alert(a); 14 | })(); 15 | 16 | ``` 17 | 18 | 19 | 20 | ##关于冒泡和捕获 21 | 22 | ###捕获 23 | 24 | 捕获过程即事件从最外层的元素开始触发,然后逐渐触发到当前元素。 25 | 26 | 例如对于如下的 DOM 结构: 27 | 28 | ```html 29 | 30 |
31 |
32 |
33 | 34 | ``` 35 | 36 | 如果 child 元素触发事件,那么捕获的过程为:body -> div.father -> div.child 。 37 | 38 | ###冒泡 39 | 40 | 冒泡与捕获相反,从当前元素开始触发,逐渐向外扩展直到最外层元素或者被终止。 41 | 42 | 例如对于上面的 DOM 结构,如果 child 元素触发事件,那么冒泡的过程为:div.child -> div.father -> body 。 43 | 44 | 如何使用 45 | 46 | 在支持的浏览器中,可以通过参数来控制发生的过程究竟是在捕获还是在冒泡,如下: 47 | 48 | `element.addEventListener('click', function () {}, false);` 49 | 其中第三个参数为 false 表示发生在冒泡阶段(默认),为 true 表示发生在捕获阶段。 50 | 51 | ###事件代理 52 | 53 | >设想一下这种场景,有一个列表,其中点击列表项需要触发一个事件,假如说这个列表有 1000 项,那是不是需要绑定 1000 次事件? 如果这还不够麻烦的话,那如果列表内容也是可变的,每次添加新的还需要再绑定事件,删除已有的也需要删除相应的事件,那么我添加 1000 项再删除 1000 次呢? 54 | 55 | 我们现在已经知道了事件存在冒泡的机制,那么对于类似的场景,我们可以通过事件代理来处理。 直接在外层的父节点上绑定事件监听,再通过 target 属性获取到事件触发的元素即可。 56 | 57 | ```html 58 | 66 | 73 | 74 | ``` 75 | 76 | target 事件属性可返回事件的目标节点(触发该事件的节点),如生成事件的元素、文档或窗口。 77 | 78 | ###阻止行为 79 | 80 | 在事件处理函数中,可以通过`e.stopPropagation()` 来阻止事件冒泡,通过`e.preventDefault()`来阻止默认行为的触发。 81 | 82 | -------------------------------------------------------------------------------- /2015/12/2015年12月11日.markdown: -------------------------------------------------------------------------------- 1 | #2015年12月11日 2 | ##Git 3 | ###vi & vim 打开 关闭 保存 文件 4 | 5 | - 创建、打开文件: 6 | 输入`$ vi [filename]`,此时 vi 处于默认的命令模式,键盘输入字母 ‘ i ’ 进入最常用的插入编辑模式. 7 | 8 | - 保存文件 9 | 按下 “ ESC ” 键,退出编辑模式,切换到命令模式. 10 | 在命令模式下键入: 11 | " ZZ " 12 | 或者: 13 | " :wq " 14 | 保存修改并且退出 vi 15 | 16 | 如果只想保存文件,则键入: 17 | " :w " 18 | 19 | 放弃所有文件修改: 20 | 按下 " ESC " 键进入命令模式,键入 " :q! " 21 | 22 | 放弃所有文件修改,但不退出 vi ,即回退到文件打开后最后一次保存操作的状态,继续进行文件操作: 23 | 按下 " ESC " 键进入命令模式,键入 " :e! " : 24 | 25 | >参考资料[连接](http://blog.chinaunix.net/uid-20671208-id-3721795.html) 26 | 27 | `cd`:根目录; 28 | 29 | `ls`:显示目录列表 30 | 31 | `touch Readme`:生成一个叫`Readme`的文件。 32 | 33 | `git mv hellogit.rb helloworld.rb`:重命名; 34 | 35 | `git commit -m "rename hellogit.rb"`:再次 提交。 -------------------------------------------------------------------------------- /2015/12/2015年12月13日.markdown: -------------------------------------------------------------------------------- 1 | #2015年12月13日 2 | ##CSS 3 | 4 | - Transition 5 | 6 | >css的transition允许css的属性值在一定的时间区间内平滑地过渡。这种效果可以在鼠标单击、获得焦点、被点击或对元素任何改变中触发,并圆滑地以动画效果改变CSS的属性值。 7 | 8 | **语法** 9 | 10 | 11 | transition : [<'transition-property'> || <'transition-duration'> || <'transition-timing-function'> || <'transition-delay'> [, [<'transition-property'> || <'transition-duration'> || <'transition-timing-function'> || <'transition-delay'>]]* 12 | 13 | - transition-property: 14 | 15 | ```html 16 | transition-property : none | all | [ ] [ ',' ]* 17 | ``` 18 | 19 | >transition-property是用来指定当元素其中一个属性改变时执行transition效果,其主要有以下几个值:none(没有属性改变);all(所有属性改变)这个也是其默认值;indent(元素属性名)。当其值为none时,transition马上停止执行,当指定为all时,则元素产生任何属性值变化时都将执行transition效果,ident是可以指定元素的某一个属性值。 20 | 21 | - transition-duration: 22 | 23 | ```html 24 | transition-duration :