Как получить фон каждого тд в jquery? - PullRequest
1 голос
/ 14 января 2020

У меня небольшая проблема с одной функцией. Работа над приложением кино, в настоящее время на странице бронирования. У меня есть таблица, имитирующая строки и числа. Одна функция меняет цвет сиденья после щелчка (на самом деле двойная, потому что не работает после одного щелчка, не знает почему). Другая функция отвечает за сбор данных, таких как строка и номер, с выделенных мест, чтобы впоследствии их можно было передавать в представления. Вторая функция видит элементы в 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 %} 

1 Ответ

0 голосов
/ 14 января 2020

change_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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...