SetAttribute также устанавливает значение для следующего элемента

Я уверен, что этот вопрос глупый, но не могу понять его сам.

Это Django-сайт, содержащий немного Javascript.

В моем HTML есть кнопка, которая должна отправить несколько значений в функцию Javascript. Затем функция javascript должна найти и обновить некоторые div в HTML.

Странно то, что значение, присвоенное оператору setAttribute, автоматически используется и для следующего оператора innerHTML (отменяя все, что там было настроено).

HTML-кнопка:

                <button class="btn btn-outline-dark" onclick="monthStats(
                {{simple_total_monthly_sent_volume}},
                {{average_monthly_delivery_rate}},
                {{average_monthly_unique_open_rate}},
                {{total_monthly_unique_open_volume}},
                {{average_monthly_unique_click_rate}},
                {{average_monthly_rejection_rate}},
                )">Month</button>

Javascript:

function monthStats (sentvolume,
                    deliveryrate,
                    uniqueopenrate,
                    uniqueopenvolume,
                    uniqueclickrate,
                    rejectionrate
                    ) {
    document.getElementById("sent").innerHTML = (sentvolume).toLocaleString("en-US");
    document.getElementById("delivered").innerHTML = deliveryrate+"%";
    document.getElementById("uniqueopened").innerHTML = uniqueopenrate+"%";
    document.getElementById("uniqueopened").setAttribute("title", uniqueopenvolume.toString());
    document.getElementById("uniqueclicked").innerHTML = uniqueclickrate+"%";
    document.getElementById("rejected").innerHTML = rejectionrate+"%";
}

HTML divs, которые должны быть обновлены:

<div class="container">
    <div class="row">
        <div class="col">
            <div id="sent" class="keymetric">{{simple_total_monthly_sent_volume|intcomma}}</div><div class="text-muted keymetricexplanation">sent volume</div>
        </div>
        <div class="col">
            <div id="delivered" class="keymetric">{{average_monthly_delivery_rate}}%</div><div class="text-muted keymetricexplanation">delivery rate</div>
        </div>
        <div class="col">
            <div id="uniqueopened" class="keymetric" data-bs-toggle="tooltip" data-bs-placement="top" title="{{total_monthly_unique_open_volume|intcomma}}">{{average_monthly_unique_open_rate}}%</div><div class="text-muted keymetricexplanation">unique open rate</div>
        </div>
        <div class="col">
            <div id="uniqueclicked" class="keymetric">{{average_monthly_unique_click_rate}}%</div><div class="text-muted keymetricexplanation">unique click rate</div>
        </div>
        <div class="col">
            <div id="rejected" class="keymetric">{{average_monthly_rejection_rate}}%</div><div class="text-muted keymetricexplanation">rejection rate</div>
        </div>
    </div>
</div>

При нажатии на кнопку Month в HTML заголовок и текстовое значение div с ID "uniqueopened" корректно обновляются Javascript. Однако оператор setAttribute в javascript, похоже, также обновляет значение следующего div с ID "uniqueclicked", отменяя оператор Javascript, нацеленный на этот div.

Я все еще не уверен, что вызвало первоначальную проблему. Но я смог решить свою проблему, используя альтернативный подход: вместо того, чтобы подталкивать все значения к одной единственной функции javascript, я создал отдельную функцию javascript, которая выполняет только обновления setAttribute.

Вернуться на верх