摘要:
<div id="div1"></div><div id="div2"></div>function addEvent( obj, type, fn ) { if (obj.attachEvent){ obj['e'+type+fn] = fn; obj[type+fn] = function(){obj['e'+type+fn](window.event);} obj.attachEvent('on'+type, obj[type+fn]); }else{ 阅读全文
文章分类 - javascript
封装示例
2012-02-17 21:25 by 边缘er, 151 阅读, 收藏, 编辑
摘要:
var Book = (function() { // Private static attributes. var numOfBooks = 0; // Private static method. function checkIsbn(isbn) { ... } // Return the constructor. return function(newIsbn, newTitle, newAuthor) { // implements Publication // Private attributes. var isbn, title, auth... 阅读全文
接口
2012-02-17 21:24 by 边缘er, 96 阅读, 收藏, 编辑
摘要:
javascript接口判断是否实现了接口,返回true后使用接口方法。var Interface = function(name, methods) { if(arguments.length != 2) { throw new Error("Interface constructor called with " + arguments.length + "arguments, but expected exactly 2."); } this.name = name; this.methods = []; for(var... 阅读全文
继承-类式继承、原型继承、掺元继承
2012-02-17 21:22 by 边缘er, 159 阅读, 收藏, 编辑
摘要:
类式继承当前最常用的继承方式,是对真正基于类的继承的一种模仿(此文代码参考自js设计模式,此方法也就是js高级程序设计中的组合继承)。function extend(subClass, superClass){//模仿类继承方法 var F = function(){}; F.prototype = superClass.prototype; subClass.prototype = new F(); subClass.prototype.constructor = subClass; subClass.super = superClass.prototy... 阅读全文
隔行换色
2012-02-17 21:15 by 边缘er, 144 阅读, 收藏, 编辑
摘要:
function oddTable(element,bgC1,bgC2){ var tb = document.getElementById(element), trLen = tb.rows.length; for (var i=0; i<trLen; i++){ tb.rows[i].style.backgroundColor = (i%2==0) ? bgC1 : bgC2; }}oddTable('table1','#ff0','#00f');//第一个talbe调用oddTable('table2','#f 阅读全文
不用等待图片加载的Onload方法
2012-02-17 20:57 by 边缘er, 517 阅读, 收藏, 编辑
摘要:
使用背景:页面含有大量嵌入式图片,实现不用等待图片加载完毕就可以对DOM操作。function addLoadEvent(loadEvent,waitForImages) {if(!isCompatible()) return false;if(waitForImages) {return addEvent(window, 'load', loadEvent);}var init = function() {if (arguments.callee.done) return;arguments.callee.done = true;loadEvent.apply(documen 阅读全文
className的几个方法:有无 增 删 toggle
2012-02-17 20:30 by 边缘er, 318 阅读, 收藏, 编辑
摘要:
获取元素样式类名的数组:function getClassNames(element){ return element.className.replace(/\s+/, ' ').split(' ');}检测是否存在某个样式类:function hasClassName(element, className){ var classes = getClassNames(element); for (var i=0;i<classes.length;i++){ if(classes[i] == className){ return true; ... 阅读全文
js换肤
2012-02-17 20:22 by 边缘er, 129 阅读, 收藏, 编辑
摘要:
平时经常会遇到网站有换肤的效果(变色),这通过删除样式表和添加样式表来实现。获取样式表function getStyleSheets(url, media){ var sheets = []; for (var i=0; i<document.styleSheets.length;i++){ if (url && document.styleSheets[i].href.indexOf(url) == -1){ continue; } if (media){ //规范化Media字符串 ... 阅读全文
iframe高度自适应
2012-02-17 20:14 by 边缘er, 113 阅读, 收藏, 编辑
摘要:
根据KouBei的UED的方法改进,webkit内页浏览器测试需要环境。function heightIframe(iframeId){ var iframe = document.getElementById(iframeId); try{ var bHeight = iframe.contentWindow.document.body.scrollHeight; var dHeight = iframe.contentWindow.document.documentElement.scrollHeight; var height = M... 阅读全文
防止事件冒泡和取消默认行为
2012-02-17 18:01 by 边缘er, 115 阅读, 收藏, 编辑
摘要:
所谓事件冒泡就是从目标事件追溯到最顶端父元素的过程。直白的说,比如有个方法名为mopao(),在按钮、按钮的父元素(div)、html,这3个元素上都调用了这个方法,那么当点击按钮的时候这个方法会依次向上执行3次。有些时候这样的行为是要防止的,就用到了下边的方法。function stopPropagation(event){ if(event.stopPropagation){ event.stopPropagation(); }else{ event.cancelBubble = true; }}与防止事件冒泡相关的一个方法就是取消默认行为的j... 阅读全文
事件对象的相关方法
2012-02-17 18:00 by 边缘er, 100 阅读, 收藏, 编辑
摘要:
这里有3个方法:第一个是获取事件对象本身;第二个是获取目标对象,这个方法在事件代理时经常用到(用到事件冒泡);第三个方法是获取事件相关对象(在鼠标移入移除时经常用到)。注意,后2个方法都是需要第一个方法作为基础。获取事件对象:function getEvent(event){ return event ? event : window.event;}获取事件目标对象:function getTarget(event){ return event.target || event.srcElement;}获取事件相关对象:function getRelatedTraget(event)... 阅读全文
注册事件和注销事件
2012-02-17 17:57 by 边缘er, 428 阅读, 收藏, 编辑
摘要:
这2个方法有很多种版本,可以列为常用js方法的前几位。这里所给出的添加事件和注销事件方法是从高级程序设计上拔下来的。这个添加事件方法有暇疵(后面有解决的方法):this指向问题(attachEvent方法中this指向window而不是element);另外在一个element上注册多个相同事件(比如多个click),DOM方法不能保证其顺序,而ieattachEvent按反顺序执行(解决办法是只写一个监听,在此方法中顺序调用其他方法)。注册事件:function addHandler(element, type, handler){ if(element.addEventListene... 阅读全文
加入收藏
2012-02-17 17:54 by 边缘er, 107 阅读, 收藏, 编辑
摘要:
function addFav(){ var favUrl = top.location.href; var favName = top.document.title; try{window.external.AddFavorite(favUrl,favName);} catch(e){ try{window.sidebar.addPanel(favName,favUrl,"");} catch(e){alert("使用快捷键 Ctrl+D 或 Cmd+D 来收藏此页!");} }} 阅读全文
getElementsByClassName
2012-02-17 17:52 by 边缘er, 237 阅读, 收藏, 编辑
摘要:
很多JS库中都有document.getElementsByClassName这个方法。下面的方法来自js设计模式,3个参数:searchClass(类名),node(父容器),tag(标签名)。function getElementsByClass(searchClass,node,tag) { var classElements = new Array(); if ( node == null ) node = document; if ( tag == null ) tag = '*'; var els = node.getElemen... 阅读全文
常用不间断(间断)滚动代码-上、左、右
2012-02-17 17:34 by 边缘er, 413 阅读, 收藏, 编辑
摘要:
不间断向上滚动:<style type="text/css"> #demo{position:absolute; width:445px; height:75px; left:20px; top:20px; overflow:hidden;}#huojiang{ width:445px; height:75px; }#huojiang li{ width:445px;font-size:12px; color:#000; line-height:18px;}#huojiang li span{ margin:0 2px; color:#ff6600;}</ 阅读全文