Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以将HTML元素合并到对象中吗?_Javascript - Fatal编程技术网

Javascript 我可以将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

我希望能够获取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 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);
}