/*base.js文件*/ |
//前台调用---实例化一个Base对象 |
var $ = function () { |
return new Base(); |
}; |
//基础库 |
//创建Base对象 |
function Base(){ |
this .elements = []; //创建一个数组,存放获得的节点和节点数组 |
//获得ID节点 |
//参数:节点的ID |
//返回值:Base对象 |
this .getId = function (id) { |
this .elements.push(document.getElementById(id)); //将获得的节点存放在数组中 |
return this ; //返回当前对象--Base(此时对象中的elements数组已经存放了需要的节点) |
}; |
//获得元素节点 |
//参数:节点的tag |
//返回值:Base对象 |
this .getTagName = function (tag) { |
//将节点数组存放在数组中(通过遍历) |
var tags = document.getElementsByTagName(tag); |
for ( var i = 0; i < tags.length; i++) { |
this .elements.push(tags[i]); |
} |
return this ; //返回当前对象--Base |
} |
} |
//设置css方法---需要在对象的原型上添加方法 |
//参数:attr--属性 value--属性对应的值 |
//返回值:Base对象 |
Base.prototype.css = function (attr, value) { |
for ( var i = 0; i < this .elements.length; i++) { |
this .elements[i].style[attr] = value; //将对象的节点设置css属性 |
} |
return this ; //返回当前对象--Base |
} |
//设置innerHTML方法---在对象的原型上添加 |
//参数:str-页面上显示的值 |
//返回值:Base对象 |
Base.prototype.html = function (str) { |
for ( var i = 0; i < this .elements.length; i++) { |
this .elements[i].innerHTML = str; |
} |
return this ; //返回当前对象--Base |
}; |
//出发点击事件click方法--在对象的原型上添加 |
//参数:一个匿名函数 |
//返回值:Base对象 |
Base.prototype.click = function (fn) { |
for ( var i = 0; i < this .elements.length; i++) { |
this .elements[i].onclick = fn; |
} |
return this ; //返回当前对象--Base |
} |
/*demo.js文件*/ |
window.onload = function () { |
//var base = new Base();//实例化一个Base对象 |
//base.getId("box").css("color", "red").css("background", "blue").html("改变现实的值").click(function () { alert("a") }); |
//另外一个问题---当前面设置了一些css属性后面再设置之后,前面的设置会被覆盖掉 |
//原因:两次设置是在通过base对象上设置的 |
//base.getTagName("p").css("background", "black"); |
//针对这个问题的解决方法 |
//在base.js中实例化一个Base对象,在demo中直接调用已经实例化好的对象,就不会出现调用同一个对象的情况 |
$().getTagName( "p" ).css( "background" , "black" ); |
$().getId( "box" ).css( "color" , "red" ).css( "background" , "blue" ).html( "改变现实的值" ).click( function () { alert( "a" ) }); |
} |