Hereigo
@Hereigo
Пишу на C# + Asp.Net (MVC) + .Net Core

IndexedDB записи выводятся в HTML-таблицу. Как получить доступ к ячейкам или строкам таблицы?

function displayRecords() {
    var transaction = db.transaction(["goods"], "readonly");
    var content = "<table>";
    transaction.oncomplete = function (event) {
        console.log("All done!");
        var records = document.getElementById("recordsList");
        records.innerHTML = content;
    };
    var objectStore = transaction.objectStore("goods");
    objectStore.openCursor().onsuccess = function (event) {
        var cursor = event.target.result;
        if (cursor) {
            content += "<tr>";
            content += "<td>" + cursor.value.a + "</td>";
            content += "<td>" + cursor.value.b + "</td>";
            content += "<td>" + cursor.value.c + "</td>";
            content += "</tr>";
            cursor.continue();
        }
        else {
            content += "</table>";
        }
    };
}

Выведенная таблица недоступна событиям страницы. И неотображается во "ViewSourcePage". Она только видна визуально и через "Developers Tools" браузера. Как прописать в таблицу события или отловить onclick элементов этой динамической страницы???
...
Заранее, спасибо огромное за советы!
  • Вопрос задан
  • 242 просмотра
Решения вопроса 1
IonDen
@IonDen
JavaScript developer. IonDen.com
Таблица у вас создается динамически, логично что она не видна в исходном коде.
Чтобы можно было кликать по ячейчкам таблицы вы можете поступить 2-я способами:
1. Делегировать события, например так:
$(document.body).on("click", "td", function () {
    // событие будет вызвано по нажатию на любую ячейку из любой таблицы на странице, не важно когда созданной
});


2. Внутри своей функции onsuccess навесить события на каждую вновь созданную ячейку таблицы
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Потому что вы изменяете DOM динамически, соответственно и эвенты на них можно повесить только после их появления в DOM, а вы небось при загрузке страницы пытаетесь их повесить.
И логично, что в исходном коде страницы её не будет, т.к. веб-сервер ничего не знает про вашу таблицу. Про неё знает только браузер.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 11:14
65000 руб./за проект
19 апр. 2024, в 11:08
5000 руб./за проект
19 апр. 2024, в 10:59
150000 руб./за проект