Просто используйте jQuery (я полагаю, вы согласны с этим?), Чтобы добавлять записи динамически.Кроме того, не используйте таблицы.Вы должны использовать <div>
s в сочетании с flexbox.Смотрите пример:
var profiles = [{
"name": "Susie",
"link": "http://www.google.com"
},
{
"name": "John",
"link": "http://www.yahoo.com"
}
];
$(document).ready(function() {
for (var i = 0; i < profiles.length; i++) {
var html = '<div>';
html += '<div>' + profiles[i].name + '</div>';
html += '<div><a href="' + profiles[i].link + '" target="_blank">Link</a></div>';
html += '</div>';
$("#people").append(html);
}
});
#people {
display: flex;
flex-direction: column;
}
#people>div {
display: flex;
border-bottom: 1px solid black;
}
#people>div>div {
flex: 1;
padding: 0.5em;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h1>People</h1>
<div id="people"></div>
Другой, еще более современный подход заключается в том, чтобы полностью избавиться от лишнего столбца и сделать весь ряд кликабельным:
var profiles = [{
"name": "Susie",
"link": "http://www.google.com"
},
{
"name": "John",
"link": "http://www.yahoo.com"
}
];
$(document).ready(function() {
$("#people").on("click", ">div", function() {
//window.location.href = $(this).data('url');
console.log("Going to: " + $(this).data('url'));
});
for (var i = 0; i < profiles.length; i++) {
var html = '<div data-url="' + profiles[i].link + '">';
html += '<div>' + profiles[i].name + '</div>';
html += '<div>Some other use data...</div>';
html += '</div>';
$("#people").append(html);
}
});
#people {
display: flex;
flex-direction: column;
}
#people>div {
display: flex;
border-bottom: 1px solid black;
cursor: pointer;
transition: 0.3s ease-in-out;
}
#people>div:hover {
background-color: black;
color: white;
}
#people>div>div {
flex: 1;
padding: 0.5em;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h1>People</h1>
<div id="people"></div>