【问题标题】:How to apply highlight function on each table row?如何在每个表格行上应用突出显示功能?
【发布时间】:2020-07-15 19:41:09
【问题描述】:

我开发了一个 web 项目,我可以在其中上传两个文件,django 服务器执行一个函数以返回在 html 模板中呈现的 pandas 数据框中与其他行不匹配的行。返回一个两列的表,file1 和 file2。我想要另一列“突出显示”文本和文本差异。我对 javascript 编程一无所知,但我不知道如何在每个表行上应用该函数。 我的意见.py

def index(request):
    form = UploadFileForm(request.POST, request.FILES)
    if request.method == 'POST':
        if form.is_valid():
            check = CheckFiles(form.cleaned_data["arquivo1"], form.cleaned_data["arquivo2"]).verifica_tamanho()
            if type(check) == str:
                return HttpResponse('The file are the same!')
            #return HttpResponse(check.to_html())
            return render(request, 'index2.html', {'check': check})
            
    else:
        print('Invalid Form!')
    return render(request, 'index.html', {'form': form})

在我的 index2.html 中:

<table class="table" border="1px">
    <thead class="thead-dark">
        <tr>
          <th scope="col">Original File</th>
          <th scope="col">Secondary File</th>
        </tr>
      </thead>
    <tr>
        {% for _, record in check.iterrows %}
            <tr>
                {% for value in record %}
                    <td>{{ value }}</td>
                {% endfor %}
            </tr>
        {% endfor %}
    </tr>
</table>

高亮的javascript函数是:

highlight($("#new"), $("#old"));

function highlight(newElem, oldElem){ 
  var oldText = oldElem.text(),     
      text = '';
  newElem.text().split('').forEach(function(val, i){
    if (val != oldText.charAt(i))
      text += "<span class='highlight'>"+val+"</span>";  
    else
      text += val;            
  });
  newElem.html(text); 
}

.highlight {background-color: #B4D5FF}

所以,我需要一些帮助来了解如何在每个表格行上应用这个 javascript 函数。 谢谢你,祝你有美好的一天。

【问题讨论】:

  • 你想做什么?
  • 如何在我的情况下应用此功能?一旦我没有办法创建 {{ value }} 和 {{ value }}。

标签: javascript html css django


【解决方案1】:

我可以看到你也使用 jquery:

$(.table tr).each(function(index){
 $(this).addClass("highlight");
});

这样您就可以对每一行应用高亮显示。 似乎您当前的突出显示功能“突出显示”字符串中已更改的字符,但我不知道它与行有什么关系...什么是 $("#new") ...什么是 $("#老”)...

**更新**

$("table tr").each(function(index){
  a = $(this).find("td");
  first_td = a.eq(0);
  second_td = a.eq(1);
  
  highlight(second_td, first_td);
});

【讨论】:

  • 新旧来自我得到这个功能的原始案例。我不知道javascript中的.each,谢谢。但我不知道如何应用它,因为就我而言,我使用的是: {% for value in record %} {{ value }} {% endfor %} 没有为 td 元素定义 id 或类。
  • 你想强调什么?一些特定的行或哪一个?抱歉,我们仍然不知道您的目标是什么。我使用的是 jquery,而不是纯 javascript,正如我在您的代码中看到的,还有 jquery 代码。
  • @victorcd 这是你要找的吗?
  • 我写的时候记住了 if 是指你的函数。如果#new 是“第二列”并且#old 是“第一列”,那么您可以访问每一行的td's。您的函数将为每一行触发。
  • @victorcd 我认为这一切都是为了在这里学习一些东西。这个论坛不是做别人的工作。如果您作为 Web 开发人员做这样的事情,我建议您获得一些 javascript 的基本知识,不要误会我的意思,但是我怎么知道您是否需要创建第三列?和平
猜你喜欢
  • 2010-10-02
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
  • 2012-05-10
  • 2019-06-09
  • 2020-10-08
  • 2015-04-21
  • 2011-05-03
相关资源
最近更新 更多