08 2011 档案

子程序(过程、函数、方法)
摘要:一般程序设计语言包含两种基本的抽象:过程抽象和数据抽象。过程抽象有时也称控制抽象。子程序在1950年以前就发明了,作为一种抽象那时候并未被完全接受。相反,最初它被看做是一种节省代码的机制,但很快子程序就被认可为过程抽象的一种方式。意识到子程序可以作为一种抽象机制,这产生了三个重要结果。人们发明了一些语言,支持各种参数传递机制奠定了「结构化程序设计」的基础,语言开始支持嵌套的子程序(如JS的function,Java的inner class)诞生了「结构化程序设计」,为试图构建大型系统提供了指导,利用子程序作为基本构建块子程序是最主要过程抽象机制。面向对象语言中的方法与子程序的概念十分相似,不同 阅读全文

posted @ 2011-08-29 14:58 snandy 阅读(19971) 评论(2) 推荐(4) 编辑

IE6/7中getAttribute获取href / src 属性(相对路径)值与其它浏览器不同
摘要:如下<a href="/abc/index.html">home</a><img src="http://images.cnblogs.com/img.png"><script> var link = document.getElementsByTagName('a')[0]; var img = document.getElementsByTagName('img')[0]; alert(link.getAttribute('href')); alert(i 阅读全文

posted @ 2011-08-28 07:21 snandy 阅读(5302) 评论(5) 推荐(1) 编辑

IE6/7中获取Button元素的值的bug
摘要:如下<button value="abc">测试</button><script> var btn = document.getElementsByTagName('button')[0]; alert(btn.value); alert(btn.getAttribute('value'));</script>IE6/7:IE8/9/10/Firefox/Safari/Chrome/Opera:IE6/7 中返回的是innerHTML,实现错误。用getAttributeNode修复,如下< 阅读全文

posted @ 2011-08-27 19:04 snandy 阅读(1770) 评论(1) 推荐(1) 编辑

IE6/7中setAttribute不支持class/for/rowspan/colspan等属性
摘要:如设置class属性el.setAttribute('class', 'abc');在IE6/7中样式“abc”将没有起作用,虽然使用el.getAttribute('class')能取到值“abc”。又如for属性<label>姓名:</label><input type="checkbox" id="name"/><script> var lab = document.getElementsByTagName('label')[0]; la 阅读全文

posted @ 2011-08-27 10:26 snandy 阅读(5312) 评论(3) 推荐(1) 编辑

设置元素class的三种方式
摘要:列举所有的方式,看看各浏览器的支持差异。一、el.setAttribute('class','abc');<!DOCTYPE HTML><HTML> <HEAD> <meta charset="utf-8" /> <title>setAttribute('class', 'abc')</title> <style type="text/css"> .abc { background: red; } </ 阅读全文

posted @ 2011-08-26 17:34 snandy 阅读(2217) 评论(0) 推荐(0) 编辑

运算数的求值顺序
摘要:请注意,这里说的是运算数的求值顺序。而非运算符,运算符的求值顺序我们比较熟悉。比如a * b + c;1,先算乘方,再算乘除,最后算加减2,有括号,先算括号里面的,同一级运算按照从左到右的顺序依次进行这一点所有的程序设计语言都采取数学中数字的计算顺序。当然程序设计语言中还有一些不同于数学中的运算符。那运算数的求值顺序是如何的呢?如下// 求 a 和 b的和sum = a + b;1,从内存中取a的值2,从内存中取b的值3,进行相加运算貌似描述的很弱智,理所当然就是这样的。有人可能觉得先取b的值,再取a,然后相加。这样最后的结果也是一样的。的确是这样。但如果运算数是一个函数执行呢?sum = a 阅读全文

posted @ 2011-08-19 11:13 snandy 阅读(2273) 评论(2) 推荐(1) 编辑

读jQuery之十五
摘要:在之前的event-jq-0.2.js基础上继续提取jQuery的trigger和namespace。实现功能如下// add eventE.bind(el, 'click', fn);E.bind(el, 'click.name', fn);E.bind(el, 'click', fn, data);// remove event : E.unbind(el, 'click', fn);E.unbind(el, 'click.name');E.unbind(el, 'click');E.unbin 阅读全文

posted @ 2011-08-18 18:23 snandy 阅读(2034) 评论(3) 推荐(3) 编辑

读jQuery之十四(触发事件核心方法)
摘要:触发事件,或称模拟用户动作。比如点击,我们可以用代码去模拟用户点击,达到的效果与真实的鼠标点击是一样的。在 事件模块的演变 我使用了dispatchEvent(标准) 和fireEvent(IE)来主动触发事件。如下...dispatch = w3c ? function(el, type){ t... 阅读全文

posted @ 2011-08-15 16:47 snandy 阅读(9936) 评论(2) 推荐(7) 编辑

函数的副作用
摘要:函数副作用 指当调用函数时,除了返回函数值之外,还对主调用函数产生附加的影响。例如修改全局变量(函数外的变量)或修改参数。函数副作用会给程序设计带来不必要的麻烦,给程序带来十分难以查找的错误,并且降低程序的可读性。严格的函数式语言要求函数必须无副作用。函数的副作用相关的几个概念,Pure Function、Impure Function、Referential Transparent。纯函数 ( Pure Function )输入输出数据流全是显式(Explicit)的。 显式(Explicit)的意思是,函数与外界交换数据只有一个唯一渠道——参数和返回值。函数从函数外部接受的所有输入信息都通 阅读全文

posted @ 2011-08-14 14:30 snandy 阅读(11397) 评论(4) 推荐(7) 编辑

事件模块的演变(9)
摘要:增加了批量添加事件E.on(el, { click : { handler : once : delay : scope : stopEvent : preventDefault : stopPropagation : }, mouseover : {}, mouseout : {}});数据结构:event-0.6.js 阅读全文

posted @ 2011-08-12 10:18 snandy 阅读(2699) 评论(0) 推荐(0) 编辑

读jQuery之十三
摘要:最近看完了添加事件和删除事件的核心方法,忍不住想把jQuery的事件模块抠出来。jQuery的代码是非常内聚的,一环套一环。想独立出来不容易。jQuery的事件模块严重依赖于其数据储存(jQuery.data),你会发现我的代码中的dataManager对象对应它。这里只提供bind和unbind方法。暂不包含事件命名空间(event namespace)事件代理(event delegation)特殊事件如dom ready接口如下:E.bind(el, 'click', fn); E.bind(el, 'click', fn, data);E.unbind( 阅读全文

posted @ 2011-08-11 11:41 snandy 阅读(2054) 评论(1) 推荐(0) 编辑

主动派发事件总结
摘要:有时需要模仿用户的一些动作(鼠标/键盘操作),最常见的莫过于鼠标点击。一一列举1,dispatchEvent()这是标准的触发事件方法,使用时需要先创建好事件对象。如下var evt = document.createEvent('Event');evt.initEvent('click',true,true);element.dispatchEvent(evt);2,fireEvent()这是IE旧版本中实现的触发事件方法,它无须创建事件对象,直接使用。如下element.fireEvent('onclick');注意:与attachEvent 阅读全文

posted @ 2011-08-07 09:27 snandy 阅读(2863) 评论(1) 推荐(4) 编辑

模拟元素点击的几种方式
摘要:最简单的莫过于使用click方法<input id="btn" type="button" value="BUTTON" onclick="alert(1)"/><script> var btn = document.getElementById('btn'); btn.click();</script>所有浏览器都弹出了1。把input换成div呢<div id="d1" style="background:gold;widt 阅读全文

posted @ 2011-08-02 06:52 snandy 阅读(40564) 评论(18) 推荐(12) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示