扩展IE不支持的属性HTMLElement,在每个获取的元素下,加上指定的方法
2012-05-19 09:13
711 查看
var domMethod = { extendDom: function(name, fn) { if(!document.all) { //不是ie浏览器 HTMLElement.prototype[name] = fn; } else { //将原来的document.createElement方法赋给临时变量 var _createElement = document.createElement; //再来扩展document.createElement方法 document.createElement = function(tag) { //将原来这个方法再赋值回来,给一个变量 var elem = _createElement(tag); //再这个变量身上,再添加一个属性,并指向一个方法 elem[name] = fn; //返回这个变量 return elem; } /* 思路:在不改变原来功能的情况下,再加上一个新的属性,这个新的属性和一个方法绑定。 */ var _getElementById = document.getElementById; document.getElementById = function(id) { var elem = _getElementById(id); elem[name] = fn; return elem; } var _getElementsByTagName = document.getElementsByTagName; document.getElementsByTagName = function(tag) { var arr = _getElementsByTagName(tag); for(var i=0; i<arr.length; i++) { arr[i][name] = fn; } return arr; } } } }
domMethod.extendDom("next", function() { element = this; do{ element = element.nextSibling; }while(element && element.nodeType != 1); return element; });
var h1 = getElementById("h1");
h1.next().style.background = "#f90";
相关文章推荐
- 兼容浏览器的获取指定元素(elem)的样式属性(name)的方法
- html5.js让IE(包括IE6)支持HTML5元素方法
- js原生封装getClassName()方法-ie不支持getElementsByClassName,所以要自己实现获取类名为className的所有元素
- document.getElementById("idName")用js方法获取元素,则设定风格属性的方法为
- 屏蔽:粘贴到KindEditor里,IE下弹出框报”对象不支持moveToElementText属性或方法“错误的提示
- html5.js让IE(包括IE6)支持HTML5元素方法
- SD9001: IE6 IE7 IE8(Q) 中的 getElementById 方法能以 name 属性为参数获取某些元素
- JQ获取指定class下面的子元素,并加属性以及JQ追加子元素的方法
- BT9034: 仅 IE 和 Opera 支持 HTMLFrameElement 和 HTMLIFrameElement 的 document 属性
- html5.js让IE(包括IE6)支持HTML5元素方法
- 让IE(包括IE6)支持HTML5元素方法–html5.js
- JQuery中根据属性或属性值获得元素(6种情况获取方法)
- 使用getElementById获取xml中的指定元素
- document.elementFromPoint在IE8下无法稳定获取当前坐标元素的解决方法
- jquery 根据属性或属性值获取元素的 6 种方法
- Java基于正则表达式获取指定HTML标签指定属性值的方法
- getElementById() 方法返回带有指定 ID 的元素
- 没有body元素,ie的getElementById获取不到元素
- 解决IE下不支持placeholder属性可以根据自己的需要去扩展.
- IE8 SCRIPT438: 对象不支持“indexOf”属性或方法