2016-12-12 68 views
1

我很新的Javascript。我只是有一个基本的问题。有人可以告诉我为什么在下面的JSFiddle链接中执行javascript代码会导致此错误:“无法读取属性'innerHTML'为null”。在Javascript中访问对象的内容

链接: http://jsfiddle.net/ali89ma/tz5h8umk

var myTable = document.createElement("TABLE"); 
var row1 = myTable.insertRow(-1); 
var cell1 = row1.insertCell(-1); 
cell1.innerHTML = "23.00"; 
cell1.id = "1000price"; 
var cell1Content = document.getElementById("1000price").innerHTML; 
console.log(cell1Content); 

但如果我写的线下正常工作。

var cell1Content = cell1.innerHTML; 
console.log(cell1Content); 

谢谢。

+0

你应该做“document.body.appendChild(myTable);”在通过id获取元素以添加您的html元素do文档之前。 –

回答

0
如上面提到的的getElementById()方法返回与具有ID属性 从DOM元件

指定值。

您dynamiclly创建一个表元素,但你没有把它添加到您的网页(这将表添加到DOM元素)

,所以你需要这个追加订单添加到您的代码,这样的:

// create a table element dynamiccly but it still not in the DOM elements 
    var myTable = document.createElement("TABLE"); 
    var row1 = myTable.insertRow(-1); 
    var cell1 = row1.insertCell(-1); 
    cell1.innerHTML = "23.00"; 
    cell1.id = "1000price"; 
//the next line will add your table to the DOM 
    document.body.appendChild(myTable); 
//now you can use the getElementById method to get elements from the DOM 
    var cell1Content = document.getElementById("1000price").innerHTML; 
    console.log(cell1Content); 
0

insertCell返回null如果父代table不存在于DOM中。

加入这一行1号线后,立即:

var myTable = document.createElement("TABLE"); 
document.body.appendChild(myTable); // <-- this line 
var row1 = myTable.insertRow(-1); 

添加行它的工作原理,我得到我的控制台“23.00”后输出。

0

您必须附加元素之后创建

var myTable = document.createElement("TABLE"); 
document.body.appendChild(myTable); 
0

你是通过JavaScript创建表。当您尝试访问表格元素时,它不会出现在DOM中。您需要将该表添加到DOM然后它将工作。添加这行代码var cell1Content

document.body.append(myTable);在body

0

追加表存取元件

var myTable = document.createElement("TABLE"); 
document.body.appendChild(myTable); 

工作之前拨弄
http://jsfiddle.net/tz5h8umk/2/