getElementById 在函数内部,但来自外部

tel*_*wap 0 javascript getelementbyid

我一直在学习关于函数、返回、id 和所有东西的非常简单的东西,所以我遇到了另一个看起来很简单的问题,但我不明白为什么会发生。检查此代码:

function test() {
    var text = document.createTextNode("Hello");
    text.id = "t";
    }


var whatIjustwrote = window.document.getElementById("t");
alert(whatIjustwrote);?
Run Code Online (Sandbox Code Playgroud)

是否getElementById有限制只能查找全局项目?使该警报输出函数内的文本节点的方法是什么?

感谢您的任何评论。最近几天在这里问东西我学到了很多东西!

JSFiddle

Jam*_*ice 5

首先,getElementById只会返回一个element,并且您正在创建一个文本节点。

其次,它只会返回一个已添加到 DOM 的元素。您创建的节点不会被添加到 DOM 中,因此即使可以找到它也不会被找到。

最后,您实际上并没有调用该test函数,因此甚至不会在内存中创建文本节点。

这是一个更新的小提琴,演示了getElementById实际工作:

function test() {
    var text = document.createElement("span"); //Create an element
    text.innerHTML = "Hello";
    text.id = "t";
    document.body.appendChild(text); //Add it to the DOM
}

test(); //Invoke the function (so the element actually gets created)
var yourElement = document.getElementById("t"); //Get reference to element
Run Code Online (Sandbox Code Playgroud)