如何在JavaScript中将随机对象文字插入DOM?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在JavaScript中将随机对象文字插入DOM?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1763字,纯文字阅读大概需要3分钟。
内容图文
![如何在JavaScript中将随机对象文字插入DOM?](/upload/InfoBanner/zyjiaocheng/722/40d16508ab694876a51bf686d20f4b08.jpg)
我正在为表单输入字段制作自定义类包装器,这些表单内部包含DOM节点,并使用额外的功能方法进行扩充.
我的问题是,如果有一个类似于.toString()的方法来附加到DOM,因为我想直接将我的对象插入DOM而不是调用其他方法
在其他工作中,这是我的一个例子:
function A () {
this.element = documenet.createElement('input');
// blah blah logic
this.toString = function () {
return '<input type="'+this.element.type+'" value="'+this.element.value+'" />';
}
// a similar method to this i'ld like
this.toString = function () {
return this.element;
}
}
所以我可以使用它如下:
var a = new A();
// this works as it calls .toString(), but it is a hack and it is not pretty
document.body.innerHTML += a;
// this is what i'd want to be able to do:
document.body.appendChild(a);
// this is what **I AM REALLY TRYING TO AVOID:**
document.body.appendCHild(a.toElement());
您不能简单地从DOM节点继承,因为它不是公共类
我试过看其他问题,但似乎没有答案……任何想法都会受到高度欢迎
解决方法:
您不能从本机DOM构造函数继承,但您可以从jQuery继承您的包装类!
function A () {
if (!(this instanceof A)) return new A(); // fix wrong constructor invocations
if (this.length) { // shouldn't be set yet, so another odd invocation:
var empty = Object.create(A.prototype); // a new, but *empty* instance
empty.length = 0; // explicitly set length
return empty;
}
this[0] = document.createElement('input');
…
// or you might want to call $.fn.init
this.context = undefined; // not sure whether
this.selector = ""; // we need those two lines
this.length = 1; // but the length is obligatory
}
A.prototype = Object.create($.fn, {constructor:{value:A,configurable:true}});
A.prototype.toString = function () {
return '<input type="'+this[0].type+'" value="'+this[0].value+'" />';
}
有了它,你可以只$(document.body).append(新的A)或新的A().appendTo(document.body)等.
内容总结
以上是互联网集市为您收集整理的如何在JavaScript中将随机对象文字插入DOM?全部内容,希望文章能够帮你解决如何在JavaScript中将随机对象文字插入DOM?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。