我需要更新一个html表格单元格,一旦选择了pickerselect,就会使用Django模板for循环创建。我的桌面HTML:
<tbody>
{% for task in tasks %}
<tr>
<td>{{ task.taskNumber }}</td>
<td>{{ task.taskDescription }}</td>
<td><div name="dataOutput">{{task.thisPeriod}}</div></td>
</tr>
{% endfor %}
</tbody>
我的用于pickerselect的HTML:
<select name="selValue" class="selectpicker">
<option value="1">Current Period ({{currentPeriod}})</option>
<option value="2">Previous Period ({{previousPeriod}})</option>
</select>
我的javascript:
<script language="JavaScript">
$(function() {
$('.selectpicker').on('change', function(){
var selected = $(this).find("option:selected").val();
var updateArray = document.getElementsByName("dataOutput");
for (var i = 0; 1 < updateArray.length; i++) {
if (selected == 1) {
updateArray[i].innerHTML = "{{task.thisPeriod}}";
} else if (selected == 2) {
updateArray[i].innerHTML = "temp";
}
}
});
});
</script>
此时,当进行选择2时,表行值将使用占位符“temp”更新,但当我更改回选择1时,表中不会显示任何值。我假设这是因为没有刷新Django模板for循环,所以它不知道如何为循环{{task.thisPeriod}}中的特定任务进行渲染。我已经查看了一些关于使用javascript刷新div的问题,但没有任何效果......我总是得到表中空值的相同结果。
答案 0 :(得分:0)
这很明显,但你不能这样做,因为javascript没有记录你传递给模板的tasks
django上下文。您应该使用ajax将所选值传递给views.py
中的单独方法,在那里您找到数据并将其返回到javascript,然后使用新数据呈现div
。