Javascript 节点已经添加到dom树中,但仍然使用getElementById获取null

Javascript 节点已经添加到dom树中,但仍然使用getElementById获取null,javascript,html,Javascript,Html,我尝试了以下两种动态添加DOM节点的方法: var myTable = "<table id=\"myLeftTable\">" + "<tr><th id=\"univName\">Name</th><th id=\"satHigh\">SAT High</th><th id=\"satLow\">SAT Low</th><th id=\"tuition\">Tuition</th

我尝试了以下两种动态添加DOM节点的方法:

var myTable = "<table id=\"myLeftTable\">" + "<tr><th id=\"univName\">Name</th><th id=\"satHigh\">SAT High</th><th id=\"satLow\">SAT Low</th><th id=\"tuition\">Tuition</th></tr>";
myTable = myTable + "<tr class=\"even\">" + "<td>" + cur.nickname +"</td>" + "<td>" + cur.SATh + "</td>" + "<td>" + cur.SATl + "</td>" + "<td>" + "$" + parseInt(cur.tuition).toFixed(0).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,") + "</td>" + "<tr>" ;
当我运行它时,当我检查元素时,我可以看到新节点添加到树中(如果这是正确的查看方式)。我试图在标题上添加一个单击处理程序,以便在用户单击时对该列进行排序。但是当我使用

document.getElementById("univName")
(univName是上面一个表头中的
id
,我可以从树中看到它有这个id),但是我仍然得到null错误


谁能告诉我怎么了

在您的第一个解决方案中,您没有在任何地方将HTML插入DOM

在第二个解决方案中,您没有创建id为
univName

在第一个解决方案中,我添加了一行代码,用于将HTML插入
div
(您需要将
document.getElementById('some-div')
替换为您尝试插入表的任何DOM节点)。我还在
univName
标题上添加了一个click处理程序,因此请尝试运行下面的代码段,然后单击标题

//只有一些虚拟数据供代码段运行。
变量cur={
昵称:“昵称”,
学费:12023,
萨特:1500,
SATl:1000,
}
var myTable=“”+”高卫星低学费名称;
myTable=myTable+++++++++cur.nickname+++++cur.SATh+++++++cur.SATl++++++“$”+parseInt(cur.tutory).toFixed(0).替换(/(\d)(?=(\d\d\d)+(?!\d))/g,$1,+”;
//将表格附加到'some div'。
//将其替换为您自己的DOM选择器
document.getElementById('some-div')。innerHTML=myTable;
//我们现在可以访问'univName'。
document.getElementById('univName')。addEventListener('click',
职能(e){
log('It works!');
});

我终于知道怎么回事了。 所以问题是我有两件事:

document.getElementById("myButton").addEventListener("click", createTable, false);

因此,如果您不单击按钮并触发第一个按钮,该按钮将创建id为“univName”的元素,您将不会获得“univName”元素,但程序仍将转到第二个按钮,并且找不到该id

这可以通过将第二行移到“createTable”函数中来解决

我对javascript还是相当陌生(这是我第二次用js编程)。我想这真的是一个粗心和错误


感谢您的帮助。

document.getElementById(“univName”)
DOM更新后调用的beig吗?如果我没有粘贴整个程序而把您弄糊涂了,请看一下。对于第一个解决方案,我有一个document.getElementById(“somediv”).innerHTML=myTable。对于第二个解决方案,我有一个名为“univName”的标题,我只是没有粘贴该部分。但是,当我调用getElementById(“univName”)时,仍然会得到null错误。@AliTurki,谢谢!我之所以选择第二个解决方案,是因为我遵循了此链接中的解决方案,并将我的解决方案从第一个更改为第二个。但是两者都不起作用,我现在很沮丧。嗨,谢谢你的解决方案,上面是我代码的一部分,因为它真的很长。我有那条线,但它仍然不起作用。再次感谢,我发现了问题。很抱歉让您困惑,下次我提问时,我可能应该粘贴程序的所有重要部分。
document.getElementById("myButton").addEventListener("click", createTable, false);
document.getElementById("univName").addEventListener("click", sort, false);