Javascript 我可以将HTML元素合并到对象中吗?
我希望能够获取HTML元素的所有属性,并将它们附加到一个对象,以便该对象与HTML元素一样工作Javascript 我可以将HTML元素合并到对象中吗?,javascript,Javascript,我希望能够获取HTML元素的所有属性,并将它们附加到一个对象,以便该对象与HTML元素一样工作 var clone = {}; function maker(obj){ var e = document.createElement("div"); e.innerHTML = "hello world"; for(var key in e){ obj[key] = e[key]; } } maker(clone); clone = <div>hello w
var clone = {};
function maker(obj){
var e = document.createElement("div");
e.innerHTML = "hello world";
for(var key in e){
obj[key] = e[key];
}
}
maker(clone);
clone = <div>hello world</div>
另一个几乎按我所希望的方式工作的选项:
var clone = {};
function maker(obj){
var e = document.createElement("div");
e.innerHTML = "hello world";
obj.e = e.cloneNode(true);
}
maker(clone);
clone.e = <div>hello world</div>
var clone={};
函数生成器(obj){
var e=document.createElement(“div”);
e、 innerHTML=“你好世界”;
obj.e=e.cloneNode(真);
}
制造者(克隆);
clone.e=你好,世界
但最佳的解决方案是能够编写
maker(clone)
,并使clone=hello world
尽可能接近
函数生成器(目标、上下文){
上下文=上下文| |这;
var source=document.createElement(“p”);
source.innerHTML=“你好世界”;
context[target]=source.cloneNode(true);
}
//全球范围
var clone={};
制造者(“克隆人”);
console.log(克隆);
//obj中的对象作用域生成器
var obj={
'objClone':{},
“方法”:函数(){
制造者('objClone',本);
}
}
obj.method();
console.log(obj.objClone);
//对象范围-obj2外部的生成器
变量obj2={
'objClone':{}
}
制造商('objClone',obj2);//你需要这里的上下文
console.log(obj2.objClone)代码>用于深度克隆HTML元素
function maker(){
var e = document.createElement("div");
e.innerHTML = "hello world";
return e.cloneNode(true);
}
您可以使用cloneNode(true)
克隆元素及其所有内容<代码>obj=e.cloneNode(真)代码>将obj的引用分离到克隆。克隆将等于{}
console.log(obj.innerHTML)
将记录hello world
,因此obj不是空的。只有在maker()函数中写入console.log(obj.innerHTML)
时。在这个函数之外,它等于{}
,如果你解释一下你的目的或确切的需要,这可能会得到更好的答案。从我们大多数人的阅读来看,cloneNode
应该做你想做的事。如果您想获得HTML元素的直接克隆以外的内容,那么我们需要更好地理解您的意图
正如我在问题中所说的,我知道它已经起作用了,我希望能够将克隆作为参数传递给maker:maker(clone)
您在问题中没有说明这一点,可能没有直接说明。这只回答了我问题的一部分。我需要.cloneNode()
的功能,但我还需要obj
来保留它对clone
的引用。下一票是因为您最初的答案刚刚告诉我如何从DOM检索元素并将其设置为obj
变量。这和我的问题无关。另外,您添加的额外代码看起来有一些奇怪之处<代码>克隆在函数中定义,然后在范围外全局使用。另外maker()
设置克隆,然后立即返回clone
,它也设置clone
。。。你的问题是从html中获取一个对象?所以你不想从dom那里得到它?这意味着您必须在js中创建元素,对吗“古怪”是通过以下方式测试函数的属性:我在JS中创建元素,我在示例的第4行中这样做。我的问题是将该元素克隆到另一个对象上,而不丢失对外部作用域的对象引用,该作用域实际上看起来非常接近我想要的功能。我现在唯一的问题是,我不能保证clone
始终在全局范围内。我不认为javascript有任何方法可以引用从哪里调用maker()
的范围,是吗?例:代替您的行window[target]=代码>我们可以编写invokedScope[target]=代码>然后我认为它会工作完美!看看吧:)
function maker(){
var e = document.createElement("div");
e.innerHTML = "hello world";
return e.cloneNode(true);
}