使用Object Constructor创建的方法的对象:
function objectexample(name) {
this.name = name;
this.create = function(){
var obj = document.createElement('div');
obj.id = this.name;
parent = document.getElementsByTagName("body")[0];
parent.appendChild(obj);
}
this.showalert = function(){
alert("alert");
}
}
现在我创建了对象:
var obj1 = new objectexample("new1");
如何为此对象运行方法.create,但不使用变量obj1,我想使用ID获取Object,例如:
document.getElementById("new1").showalert();
有可能吗?
答案 0 :(得分:1)
但是,您需要该元素包含对创建它的对象的引用。
在下面的演示中:
new
obj1
时,我们定义了3个属性:
name
。create()
方法创建元素。showAlert()
方法,在调用时输出一些数据。showAlert()
之前调用create()
时,我们会获得有关该对象的任何可用数据,但没有关于尚未创建的元素的信息。create()
时,我们创建元素,并将creation
定义为对象的属性,并将元素作为其值。creator
定义为元素的属性,其值为this
(创建元素的对象)。creator
)有一个名为creation
的子元素,该元素具有creator
及其拥有的所有属性,包括其方法。换句话说,如果new
对象生成一个元素,则该元素采用其创建者的属性,并且创建者紧紧抓住其孩子的手。
function ObjectExample( name ) {
this.name = name;
this.create = function() {
this.creation = document.createElement( "div" );
this.creation.id = name;
this.creation.creator = this;
document.body.appendChild( this.creation );
}
this.showAlert = function() {
// alert( "Alert!" ); // simpler for demo to use console
console.log( this.name );
console.log( this.creation );
return this.creation;
}
}
let obj1 = new ObjectExample( "new1" );
if ( !obj1.showAlert() ) {
obj1.create();
}
document.getElementById( "new1" ).creator.showAlert();
答案 1 :(得分:0)
您所谈论的是变量名称,而不是对象ID。
document.getElementById
与Javascript变量名无关,而是用于通过id从HTML文档中选择元素。但是,根据您的使用情况,可以通过几种不同的方式执行此操作。
一种方法是使用全局/整齐的对象,每次调用构造函数时都要修改它。
let objects = {}; // create your global object
function objectexample(name) {
this.name = name;
// append this to global object
objects[name] = this;
this.create = function(){
var obj = document.createElement('div');
obj.id = this.name;
parent = document.getElementsByTagName("body")[0];
parent.appendChild(obj);
}
this.showalert = function(){
alert("alert");
}
}
new objectexample("new1");
console.log(objects.new1)
console.log(objects["new1"]) // alternatively method