如何在jquery中获取每个td的背景?

如何在jquery中获取每个td的背景?,jquery,django,Jquery,Django,我对一个函数有一个小问题。正在使用影院应用程序,当前位于预订页面。我有一张表格,上面有行和数字。一个功能会在单击后更改座椅的颜色(实际上是双击,因为它在单击后不起作用,不知道为什么)。另一个函数负责从高位座位收集行数等数据,以便稍后将其传递给视图。第二个函数可以看到console.log中的元素,但是当我想要获得背景颜色时,它会返回undefined。谢谢你的提示 {% extends "main_templates/main.html" %} {% load static %} {% bloc

我对一个函数有一个小问题。正在使用影院应用程序,当前位于预订页面。我有一张表格,上面有行和数字。一个功能会在单击后更改座椅的颜色(实际上是双击,因为它在单击后不起作用,不知道为什么)。另一个函数负责从高位座位收集行数等数据,以便稍后将其传递给视图。第二个函数可以看到console.log中的元素,但是当我想要获得背景颜色时,它会返回undefined。谢谢你的提示

{% extends "main_templates/main.html" %}
{% load static %}
{% block content %}
    <div class="container">
      <table class="table table-bordered ">
        <tbody>
          {% for row in seats_range %}
          <tr>
            <th scope="row" class="bg-danger">{{row}}</th>
            {% for number in seats_range %}
              <td class="text-center" style="width:5%;" value="{{row}}" onclick="change_bg(this)"><a href="#"></a>{{forloop.counter}}</a></td>
            {% endfor %} 
          </tr>
          {% endfor %} 
        </tbody>
      </table>
    </div>
    <button type="submit" onclick="get_all_fields()">click me</button>



<script>

function change_bg(element){
  var color_to_change = "rgb(121, 12, 131)"
  $(element).click(()=>{
    console.log($(element).attr("value"))
    var color_now = $(element).css("background-color")
    if (color_now == color_to_change){
      color_to_change = "rgb(255, 0, 0)"
    }
    $(element).css("background-color", color_to_change)

  })
}

function get_all_fields(){
  var array = []
  var color_to_find = "rgb(255, 0, 0)"
  $(".table-bordered tbody td").each(()=>{
    let element_color = $(this).css("background-color")
    if(element_color == color_to_find){
      let element_row = $(this).attr("value")
      let element_number = $(this).text()
      let required_data = [element_row, element_number]
      array.push(required_data)
    }
  })
}
</script>
{% endblock %} 
{%extends“main_templates/main.html”%}
{%load static%}
{%block content%}
{座椅范围%中的行的百分比}
{{row}}
{座位数的百分比\范围%}
{{forloop.counter}
{%endfor%}
{%endfor%}
点击我
功能变更(要素){
var color_to_change=“rgb(121、12、131)”
$(元素)。单击(()=>{
console.log($(元素).attr(“值”))
var color\u now=$(元素).css(“背景色”)
如果(颜色现在==颜色改变){
color\u to\u change=“rgb(255,0,0)”
}
$(元素).css(“背景色”,颜色变化)
})
}
函数get_all_fields(){
变量数组=[]
var color_to_find=“rgb(255,0,0)”
$(“.table bordered tbody td”)。每个(()=>{
让元素_color=$(this.css(“背景色”)
if(元素颜色==要查找的颜色){
让元素_行=$(this).attr(“值”)
让元素_number=$(this).text()
let required_data=[元素行,元素编号]
array.push(必需的\u数据)
}
})
}
{%endblock%}

change\u bg
不应绑定单击处理程序,因为它是从
onclick
调用的。它应该立即更新背景

function change_bg(element) {
  var color_to_change = "rgb(121, 12, 131)"
  console.log($(element).attr("value"))
  var color_now = $(element).css("background-color")
  if (color_now == color_to_change) {
    color_to_change = "rgb(255, 0, 0)"
  }
  $(element).css("background-color", color_to_change)
}

change\u bg
不应绑定单击处理程序,因为它是从
onclick
调用的。它应该立即更新背景

function change_bg(element) {
  var color_to_change = "rgb(121, 12, 131)"
  console.log($(element).attr("value"))
  var color_now = $(element).css("background-color")
  if (color_now == color_to_change) {
    color_to_change = "rgb(255, 0, 0)"
  }
  $(element).css("background-color", color_to_change)
}

您不应该在
change\u bg
中绑定事件处理程序,您应该只进行更改。将函数置于
onclick
上已经创建了一个事件处理程序。@它来自
onclick=“change\u bg(this)”
中的参数。您不应该在
change\u bg
中绑定事件处理程序,您应该只进行更改。将函数置于
onclick
上已经创建了一个事件处理程序。@sonic它来自
onclick=“change\u bg(this)”
谢谢,先生:)中的参数,这是一个明显的错误,但给了我很多麻烦。我仍然无法使用第二个函数显示高位行。你能在代码中看到任何可疑的东西吗?你的意思是
获取所有字段()
?它没有突出显示任何内容。它只是将数据推送到数组中,但对它没有任何作用。是的,我需要推送背景颜色设置为红色的元素。问题在于,当我在控制台中打印元素时,这个函数会看到这些元素,但当我尝试获取任何未定义的属性时,就会看到这些元素。您不应该使用非标准属性<代码>值
不是
元素的标准属性。如果您需要向元素添加自定义数据,请使用
data XXX
属性,您可以使用jQuery中的
.data()
访问这些属性。这也是获取所选行的更好方法,而不是使用CSS。谢谢您,先生:)这是一个明显的错误,但给了我很多麻烦。我仍然无法使用第二个函数显示高位行。你能在代码中看到任何可疑的东西吗?你的意思是
获取所有字段()
?它没有突出显示任何内容。它只是将数据推送到数组中,但对它没有任何作用。是的,我需要推送背景颜色设置为红色的元素。问题在于,当我在控制台中打印元素时,这个函数会看到这些元素,但当我尝试获取任何未定义的属性时,就会看到这些元素。您不应该使用非标准属性<代码>值
不是
元素的标准属性。如果需要向元素添加自定义数据,请使用
data XXX
属性,您可以使用jQuery中的
.data()
访问这些属性。这也是获取所选行的更好方法,而不是使用CSS。