如何使用 javascript 在 twig 循环中更改 div 的背景颜色

How to change background color of div in loop in twig using javascript

我是 JavaScript 的新手。我想更改循环中 div 元素的背景颜色。每次单击 div 元素时,背景颜色应更改为蓝色。我试过使用 CSS,它有效。我希望在 Javascript 中实现它。我想更改所选 div 的背景颜色。但是我的代码改变了之前选中和当前选中的背景颜色div.

我试过的是:

树枝代码:

        <div class="inbox_chat">
          {% set newArray = [] %}
          {% for msg in msg_details %}
          {% if msg.to_name not in newArray %}

         
        <div class="chat_list active_chat" tabindex="{{loop.index}}" id="{{loop.index}}" onclick="viewMessage('{{loop.index}}')" >
          <div class="chat_people">
            <div class="chat_img"> <img src="https://ptetutorials.com/images/user-profile.png" alt="sunil"> </div>
            <div class="chat_ib">
              <h5>{{msg.to_name}} <span class="chat_date">{{msg.time}}</span></h5>
              
            </div>
          </div>
        </div>
        {% set newArray = newArray|merge([msg.to_name]) %}
          {% endif %}
        {% endfor %}
         </div>

Javascript代码:

  <script>
   function viewMessage(elementId) 
{ 
var e = document.getElementById(elementId);
var c= window.getComputedStyle(e).backgroundColor;
if (c === "rgb(235, 235, 235)") 
{
document.getElementById(elementId).style.backgroundColor = "blue";
} else
{
document.getElementById(elementId).style.backgroundColor = "rgb(235, 235, 235)";
 }
}
</script>

我的代码改变了当前选中和之前选中的背景颜色div 元素。

我的输出是什么:

Output

如何只更改所选 div 的背景颜色而不更改另一个 div 背景 颜色?

您应该使用 getPropertyValue 来获取计算值 属性:

function viewMessage(elementId) {
    var e = document.getElementById(elementId);
    var c = window.getComputedStyle(e).getPropertyValue('background-color');
    if (c === "rgb(235, 235, 235)") {
        document.getElementById(elementId).style.backgroundColor = "blue";
    } else {
        document.getElementById(elementId).style.backgroundColor = "rgb(235, 235, 235)";
    }
}