JavaScript从自定义对象访问元素
这一定是一个很愚蠢的问题,但我就是不能让它起作用 我正在为iOS创建自己的UIKit。(允许类似iPhone的界面的网站工具包) 但是,我正在尝试创建一个JavaScript库,它可以用来更改文档的几个元素。例如,在加载文档时设置自定义背景颜色 我正试图用面向对象的JavaScript实现这一点。像这样:JavaScript从自定义对象访问元素,javascript,oop,Javascript,Oop,这一定是一个很愚蠢的问题,但我就是不能让它起作用 我正在为iOS创建自己的UIKit。(允许类似iPhone的界面的网站工具包) 但是,我正在尝试创建一个JavaScript库,它可以用来更改文档的几个元素。例如,在加载文档时设置自定义背景颜色 我正试图用面向对象的JavaScript实现这一点。像这样: var UI = new Interface(); UI.setBackground("#000"); 我怎样才能做到这一点? (因此,自定义“UI”对象,以及(示例)如何从对象内部更改文档
var UI = new Interface();
UI.setBackground("#000");
我怎样才能做到这一点?
(因此,自定义“UI”对象,以及(示例)如何从对象内部更改文档的背景色。)您可以在JS对象中保存对DOM的引用,并根据需要重写它
function Interface() {
this.setBackground = function (color) {
this.pointTo.style.background = color;
};
this.pointTo = document.body;
}
您可以通过以下方式对此进行初始化:
var UI = new Interface();
UI.pointTo = document.getElementById('some_id');
UI.setBackground("#000");
// Set another style, on a different element
UI.pointTo = document.getElementById('some_other_id');
UI.setBackground("#FFF");
这是一个简单的实现,需要更智能地分配,但它应该可以完成这项工作
编辑:
在原始发布中出错,并修复了错误代码。还举了一个例子:这里有一个非常简单的方法
// define the object
var Interface = function () {
var interface = document.getElementById("interface"); // just an example
// your new methods
this.setBackground = function (color) {
interface.style.backgroundColor = color;
}
// rest of your code
}
现在你可以利用它了
var UI = new Interface();
UI.setBackground("#000");
与silverstrike的代码类似,但您可以在接口构造函数中传递目标对象,以避免将来遇到麻烦
function Interface(target) {
target = target || document.body;
this.setBackground = function (color) {
target.style.background = color || 'white';
};
}
好的,现在您可以执行以下操作:
var UI = new Interface(document.body);
UI.setBackground("#000");
甚至在某些情况下,您正在应用全局范围中的接口
!只有!:
var UI = new Interface(this.body);
UI.setBackground("#000");
也将按照以下方式工作:
var UI = new Interface();
UI.setBackground("#000");
我已经尝试过类似的方法,但问题是“document”对象在方法中不起作用。。。