You have quite a few things that need attention, but your biggest problem is the concatenation of the strings and the nesting of quotes within those strings.
When making new HTML elements, use modern standards. Instead of concatenating strings, create the element(s) as objects in memory and then configure their properties. This will eliminate the need for concatenation and make life a lot simpler. For example, if you decide you want to swap the order of the cell content, just swap the position of two lines of code - no worries about modifying a string.
Also, don't use inline HTML event attributes (i.e. onclick
. onmouseover
, etc.) here's why. Instead, use modern standards.
You can see how much simpler the following code is and does not require any messing around with quotes or concatenation.
// Just sample data
var Location = [
{ Hour:"9", Date: new Date().toLocaleDateString(), Amount: 100.00 },
{ Hour:"12", Date: new Date().toLocaleDateString(), Amount: 200.00 },
{ Hour:"3", Date: new Date().toLocaleDateString(), Amount: 300.00 }
];
// Get reference to table
var t = document.getElementById("tbl");
// Use .forEach to iterate an array instead of couting loop.
// It's simpler because there is no counter that you have to
// manage and accessing the array element being iterated is easy
Location.forEach(function(element){
// Create a new row element as an object in memory
var tr = document.createElement("tr");
// Now, create the cells that go in the row and configure them
var td1 = document.createElement("td");
td1.textContent = element.Date;
var td2 = document.createElement("td");
td2.textContent = element.Hour;
var td3 = document.createElement("td");
td3.textContent = element.Amount;
var td4 = document.createElement("td");
var btn = document.createElement("input");
btn.type = "button";
btn.classList.add("nav_button", "btnAction");
btn.value = "Click Me!";
// This is the modern approach to setting up event handlers
// It's done completely in the JavaScript
btn.addEventListener("click", function(){
test(element.Hour, element.Date, element.Amount);
});
// Add the button to the cell
td4.appendChild(btn);
// Add the cells to the row
tr.appendChild(td1);
tr.appendChild(td2);
tr.appendChild(td3);
tr.appendChild(td4);
// Add the row to the table
t.appendChild(tr);
});
function test(date, hour, amount){
console.log(date, hour, amount);
}
tr:nth-child(odd) {
background-color:#0af;
}
table, td {
border-collapse:collapse;
border:1px solid gray;
padding:3px;
}
<table id="tbl"></table>