我使用django尝试重播评论,因为他们的ID。一切正常,但我只能通过javascript获取循环中的最后一项。
{% for comment in object_comments %}
<li>
<article>
<div class="comment-avatar">
<img src="images/blog/author.png" class="avatar">
<span class="comment-reply">
<a id='reply' class="comment-reply-link" onClick="a_onClick()">Reply</a>
</span>
</div>
<script>
function button_onClick() {
$('').click();
}
function a_onClick() {
window.scrollTo(0,document.body.scrollHeight);
document.getElementById('text').value = "{{comment.name}}";
}
</script>
<div class="comment-body">
<div class="meta-data">
<a href="#" class="comment-author">{{ comment.name }}</a>
<span class="comment-date">
{{ comment.pub_date }}
</span>
</div>
<div class="comment-content">
{{ comment.text }}
</div>
</div>
</article>
</li>
{% endfor %}
数据由document.getElementById('text').value = {{comment.name}};
有人可以帮忙找一些解决方法吗?
答案 0 :(得分:0)
你只得到最后一个值的原因是你的<script>
函数在for循环中,所以你的Django循环输出的代码包含这个脚本代码n次,使用每次使用相同的函数名称。因此,每个定义“覆盖”,即替换前一个定义。因此,浏览器的Javascript解释器使用的a_onClick()
的唯一定义是循环的最后一次迭代,循环中的最终{{ comment }}
。
您的代码段不包含该功能更改的#text
元素,因此我无法完全遵循该功能。但为了防止您所描述的错误,首先将您的<script>
代码移到Django for循环之外 - 将其放在循环之后,或者放在文档正文的末尾。然后你的函数调用需要为循环中的每个项传递正确的comment.name
。您可以在循环内执行以下操作:
onclick="a_onClick('{{ comment.name }}')";
然后将您的功能更改为:
function a_onClick(comment_name) {
window.scrollTo(0,document.body.scrollHeight);
document.getElementById('text').value = comment_name;
}