我的django模板中有一个数据表,我在表中有一个td元素,如下所示
<td onclick="setColor('{{x.name}}')">{{x.name}}</td>`
每次加载网页时我都需要这个元素来运行'setColor'函数。我无法在这里使用onload,因为oload对这些元素无效,但是我需要传递这些参数(因为我在这里使用了for循环,这个函数在循环中被调用多次{{x.id} }}限制我只从精确的td元素调用此函数。有没有办法可以实现这一点,以便在页面加载时调用函数,并将参数传递给函数?
答案 0 :(得分:0)
我使用了django过滤器来解决这个问题。 html代码如下:
{% load filters.py %}
<td><span style="color:{{x.name|getNameColor}}">{{x.name}}</span></td>
我在filters.py中定义了getNameColor过滤器,如下所示:
@register.filter(name='getNameColor')
def getNameColor(value):
if value == 'xxx':
return '#f19203'
elif value == 'yyy':
return '#b3a800'
elif value == 'zzz':
return '#f45c42'
elif value == 'uuu':
return '#44cc00'
有用的链接:http://www.pfinn.net/custom-django-filter-tutorial.html
答案 1 :(得分:0)
对于谁正在搜索HTML / JavaScript答案:
我遇到了同样的问题,并找到了使用在window.onload函数中检索到的自定义属性的解决方案。在我的页面中,我使用了<tr>
元素,但这也适用于<td>
。
在表中:
<table>
<tr name="my_row" foo="value1"><td>value1</td></tr>
<tr name="my_row" foo="value2"><td>value2</td></tr>
</table>
在window.onload函数中:
window.onload = function bar() {
var rows = document.getElementsByName("my_row")
for (row in rows) {
var foo = row.getAttribute("foo")
if (foo == "value1") {
// Do something
}
}
}