0

我已经使用给定的函数来获取表的数据,并检查该值是否为负,因此突出显示它。现在我使用 djangohumanize让数字更容易阅读。但是这段代码没有被执行。

var formatBackground=function(){
    tdArray=document.getElementsByTagName('td');
    for(l=0; l<=tdArray.length-1;l++){
        val = tdArray[l].innerHTML;
        if(!isNaN(parseFloat(val)) && isFinite(val)){
            console.log("INCOMMING VALUE: ",val);
            tdArray[l].innerHTML='{{ val|floatformat:"3"|intcomma }}';//NON EXECUTED LINE OF CODE
            }
        if(Math.abs(parseFloat(val))!== parseFloat(val) && !isNaN(Math.abs(parseFloat(val)))){
            tdArray[l].setAttribute('style','color: red');
            tdArray[l].parentNode.setAttribute('style','background-color: pink');
        }
    }
};

请帮帮我我该怎么做?
我已经加载了 ' {% load humanize %}'
并且也放在'django.contrib.humanize'了我的INSTALLED_APPS, 中settings.py

4

2 回答 2

3

这是行不通的。您似乎没有理解服务器端模板代码和客户端 JavaScript 之间的区别。模板代码在传递给浏览器之前在服务器端进行全面评估。由客户端控件更改触发的 JS 不可能评估模板标签。

于 2013-08-06T14:44:58.730 回答
1

您不能像这样混合服务器端 (Django) 和客户端 (JS) 代码:在将任何内容发送到浏览器之前执行整个 Django 代码,此时执行整个 JS 代码。

在您的情况下,您正在定义一个 JS 变量val(在浏览器中),然后尝试使用 Django 对其进行格式化(在浏览器看到它之前)。

于 2013-08-06T14:45:25.180 回答