我已经很长时间没有使用javascript了,所以如果我的问题看起来很傻,请多多包涵。
我正在尝试创建图像,设置其ID,然后尝试“获取”元素,我总是想出“空”
var gearImg = new Image();
gearImg.id = "logoGear";
gearImg.src = "img/gear-fun.png";
var gear = document.getElementById("logoGear");
// null?
alert(gear);
[如果我在HTML中设置了ID的实际图像,则'getElementByID'可以正常工作。我敢肯定,这里我缺少一些基本的或琐碎的东西,但是我不知道有什么更好的。发生了什么,如何获得所需的行为。
document.getElementById
仅处理文档中的元素。由于gearImg
不是文档的一部分,因此不返回任何内容。尝试先将其放置在某个位置,例如:
document.body.appendChild(gearImg)
((我的DOM技能也很生锈,我不确定这是否行得通。为什么我们不简单使用jQuery?)
您必须将元素附加到目标,例如主体,第一个或另一个DOM元素
var gearImg = new Image();
gearImg.id = "logoGear";
gearImg.src = "img/gear-fun.png";
document.body.appendChild(gearImg); // add to body tag
var gear = document.getElementById("logoGear");
alert(gear);
要从element
中检索DOM
,必须先将其从append
移至DOM
。
用途:
document.body.appendChild(gearImg);
或:
someElement.appendChild(gearImg);
然后您可以呼叫document.getElementById('logoGear');
这是因为您没有将图像附加到文档中。
因此,当您执行document.getElement....
时,您应该收到无
您应该做的小提琴:http://jsfiddle.net/maniator/UPaUa/
代码:
var gearImg = new Image();
gearImg.id = "logoGear";
gearImg.src = "img/gear-fun.png";
document.body.appendChild(gearImg);
var gear = document.getElementById("logoGear");
alert(gear);
元素尚未添加到DOM,因此不在document
内部。
您可以使用创建时使用的手柄访问刚刚创建的图像-gearImg
。
也与您的问题无关,但是您绝对应该使用JavaScript框架,例如jQuery。
这是因为您没有在文档上添加齿轮。该document.getElementById(“”)仅适用于文档元素……如表,文档页面上已存在的行。
这是因为document.getElementById用于访问DOM中的元素,但是您在脚本中创建的对象仅在内存中,而不在文档中。
实际上,因为它是内存,所以您无论如何都不需要以这种方式访问它-您已经在一个变量中拥有它。
您实际上想实现什么?如果只需要在页面的现有元素中添加图像,则需要先找到该现有元素并将其添加。
我还应该指出,您可能会发现jQuery是最简单的方法。确实,浏览页面内容确实非常容易。