【发布时间】:2020-03-19 21:00:10
【问题描述】:
我有一个使用 Django 变量填充的 HTML 表:
<h3>Recommended Playlist</h3>
<table class="table table-dark" id="playlist_table">
<thead>
<tr>
<th scope="col">
<h4>Artist</h4></th>
<th scope="col">
<h4>Track</h4></th>
<th scope="col" style="display:none;">
<h4>Track ID</h4></th>
<th scope="col">
<h4>Album</h4></th>
<th scope="col" colspan="2">
<h4>Accept/Reject</h4></th>
</tr>
</thead>
<tbody>
{% for song in playlist %}
<tr>
<td>{{song.artist_name}}</td>
<td>{{song.track_name}}</td>
<td style="display:none;" class="song_id">{{song.track_id}}</td>
<td>{{song.album_name}}</td>
<td class="approve"><i class="fas fa-check-circle fa-2x" onclick="approveRow(this)"></i></td>
<td class="reject"><i class="fas fa-times-circle fa-2x" onclick="deleteRow(this)"></i></td>
</tr>
{% endfor %}
</tbody>
</table>
用户可以使用勾号/X 图标“接受”或“拒绝”行: Table Screenshot
如果用户“接受”/“拒绝”一首歌曲,则会调用以下 Javascript 函数:
//if a user accepts a row
function approveRow(r) {
var i = r.parentNode.parentNode.rowIndex;
var row = document.getElementById("playlist_table").rows[i];
row.deleteCell(5);
row.deleteCell(4);
var blank1 = row.insertCell(4); //green tick once song approved
blank1.innerHTML = '<center><i class="fas fa-check-circle fa-2x" style="color:#00ee21;"></i></center>';
//order of above is important as once a cell is deleted, the other's index is index-1
approve_counter++;
console.log(approve_counter);
song_selection.push('Accept');
}
//if a user rejects a row
function deleteRow(r) {
var i = r.parentNode.parentNode.rowIndex;
document.getElementById("playlist_table").deleteRow(i);//delete existing row
var table = document.getElementById("playlist_table");
var row = table.insertRow(i); //insert new blank row
var artist = row.insertCell(0);
var track = row.insertCell(1);
var album = row.insertCell(2);
var approve = row.insertCell(3);
var reject = row.insertCell(4);
artist.innerHTML = "New Artist";
track.innerHTML = "New Track";
album.innerHTML = "New Album";
approve.className = 'approve';
reject.className = 'reject';
approve.innerHTML='<i class="fas fa-check-circle fa-2x" onclick="approveRow(this)"></i>';
reject.innerHTML='<i class="fas fa-times-circle fa-2x" onclick="deleteRow(this)"></i>';
reject_counter++;
console.log(reject_counter);
song_selection.push('Reject');
}
如果用户此刻“拒绝”一首歌曲,则该行仅填充占位符变量(见下文)。
我想知道是否有办法动态 填充行? Django 查询集 ({{playlist}}) 目前有 10 个项目,并用 10 首歌曲填充表格。我希望能够在查询集中拥有例如 50 个项目,并一次用 10 个填充表。如果用户“拒绝”歌曲,则查询集中的下一项(第 11 项)将成为表中的新行,依此类推。
任何帮助将不胜感激,谢谢! :)
【问题讨论】:
标签: javascript python jquery html django