Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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直接访问dom元素并使用变量_Javascript_Variables_Dom - Fatal编程技术网

Javascript直接访问dom元素并使用变量

Javascript直接访问dom元素并使用变量,javascript,variables,dom,Javascript,Variables,Dom,你为什么这么做 var consoleElem = document.getElementById("debug"); consoleElem.appendChild(msgElement) 一模一样 document.getElementById('debug').appendChild(msgElement); 在我看来,DOM元素(debug)是它自己的变量,然后将它复制到另一个变量意味着我有两个debug元素的副本。。。为什么我对新副本(var consoleElem)所做的任何更改

你为什么这么做

var consoleElem = document.getElementById("debug");
consoleElem.appendChild(msgElement)
一模一样

document.getElementById('debug').appendChild(msgElement);

在我看来,DOM元素(debug)是它自己的变量,然后将它复制到另一个变量意味着我有两个debug元素的副本。。。为什么我对新副本(var consoleElem)所做的任何更改都要对原始DOM元素进行更改?

控制台元素中的内容不是DOM元素本身,而是对它的引用。。因此,通过引用所做的任何更改实际上都应用于DOM元素本身


如果要修改元素而不实际更改原始元素本身,则应克隆该元素。。jQuery提供了克隆功能。

调用
文档。getElementById
返回对DOM元素的引用。所有这一切都结束了

var consoleElem = document.getElementById("debug");
是否将该引用存储在变量中;它不会创造任何东西。可以有十几个变量引用同一个元素,但它仍然只是一个元素


如果要创建元素,请使用
document.createElement
。如果要复制元素,请使用
newElement=oldElement.cloneNode()

它不会复制它。它只创建对元素的引用。我相信,要进行复制,必须调用cloneNode()。