Reputation: 77
I want to create td and tr in table using html dom but I got the error . Uncaught NotFoundError: Failed to execute 'appendChild' on 'Node': The new child element is null.
<html>
<head>
<meta charset="utf-8"/>
<title>Math game 2</title>
<script type="text/javascript">
var element = document.createElement("input");
var element2 = document.createElement("input");
var element3 = document.createElement("table");
var valid = true;
var valid2 = false;
function rand(){
var isZero = isEqual = 1;
while( isEqual == 1 || isZero == 1 ){
num = String(Math.ceil(Math.random() * 10000));
isEqual = 0;
isZero = 0;
if( Number(num) > 1111 && num[0] != '0' && num[1] != '0' && num[2] != '0' && num[3] != '0' ){
for(i=0;i<=2;i++){
for(j=i+1;j<4;j++){
if( num[i] == num[j] ){
isEqual = 1;
}
}
}
if( isEqual != 1 ){}
}else{
isZero = 1;
}
}
if( valid == true ){
element.setAttribute("id","inp");
element.setAttribute("type","text")
element.setAttribute("placeholder","Enter your number");
element.setAttribute("maxlength","4")
document.body.appendChild(element);
element2.setAttribute("type","button");
element2.setAttribute("value","Let's go!");
element2.setAttribute("onclick","ran()");
document.body.appendChild(element2);
valid = false;
}
}
function ran(){
var val = document.getElementById('inp').value;
if( val.length == 4 ){
if( valid2 == false ){
element3.setAttribute("border","2");
element3.style.margin="5px 2.5px";
document.body.appendChild(element3);
valid2 = true;
}
valueInsert();
}else{
alert('Error');
}
}
function valueInsert(){
var val = document.getElementById('inp').value;
var rowCount = element3.rows.length;
var row = element3.insertRow(rowCount);
var cell1 = row.insertCell(0);
cell1.innerHTML = val;
cell1.appendChild("element3");
}
</script>
</head>
<body>
<button onclick="rand()" onclick="ran()">Start Game</button><br/>
<h1 id="answer"></h1>
</body>
please help me how to make td tr in table using html dom.
Upvotes: 2
Views: 114
Reputation: 149
Just remove cell1.appendChild("element3");
line in your valueInsert
method. It'll work.
function valueInsert(){
var val = document.getElementById('inp').value;
var rowCount = element3.rows.length;
var row = element3.insertRow(rowCount);
var cell1 = row.insertCell(0);
cell1.innerHTML = val;
}
Upvotes: 2