Как создать таблицу из массива с помощью javascript

#javascript

#javascript

Вопрос:

Я пытаюсь выяснить, как я могу перенести массив с несколькими переменными в таблицу HTML, используя только javascript. Мой код javascript до сих пор отображает все на странице, и я не хочу, чтобы отображались теги типа и тому подобное. Результат должен выглядеть примерно так [table_example_image] .

Инструкции:

Используя JavaScript, перебирайте элементы в массиве и динамически отображайте коллекцию в таблице в разделе вашей веб-страницы.

Вся таблица (включая замену любого текста true / false реальными изображениями, как в примере) и содержимое должны быть сгенерированы и выведены с помощью JavaScript.

Внутри таблицы создайте элемент для каждого из свойств в коллекции массива (например, title, author, alreadyRead) — количество столбцов и текст должны быть динамически сгенерированы на основе JavaScript, а не «жестко закодированы».

Создайте и добавьте a для каждого значения Используйте JavaScript для добавления и создания правил стиля для таблицы в разделе HTML-документа.

Любые советы будут оценены!

     var books = [
    {
        title: 'The Stranger',
        author: 'Albert Camus',
        alreadyRead: true
    },
    {
        title: 'Binging with Babish',
        author: 'Andrew Rea',
        alreadyRead: true
    },
    {
        title: 'You Suck at Cooking: The Absurdly Practical Guide to Sucking Slightly Less at Making Food: A Cookbook',
        author: 'You Suck at Cooking',
        alreadyRead: false
    }];

createTable();

function createTable() {
    var table = document.createElement("table");  //makes a table element for the page

    table  = "<tr class='firstRow'><th>Title</th><th>Author</th><th>Read?</th></tr>";  //adds the first row that contains the sections for the table

    for (var i = 0; i < books.length; i  )  //loops through the array 
    {
        //add info from the array into this
        table  = "<tr><td>"   books[i].title   "</td><td>";
    }

    document.body.append(table);
}
 

Комментарии:

1. Какие проблемы у вас возникли с опубликованным кодом?

Ответ №1:

В данный момент вы пытаетесь добавить строку в объект таблицы. Проверьте эту страницу.

 function createTable() {

    var headers = ["Title", "Author", "Read?"];
    var table = document.createElement("TABLE");  //makes a table element for the page
        
    for(var i = 0; i < books.length; i  ) {
        var row = table.insertRow(i);
        row.insertCell(0).innerHTML = books[i].title;
        row.insertCell(1).innerHTML = books[i].author;
        row.insertCell(2).innerHTML = books[i].alreadyRead;
    }

    var header = table.createTHead();
    var headerRow = header.insertRow(0);
    for(var i = 0; i < headers.length; i  ) {
        headerRow.insertCell(i).innerHTML = headers[i];
    }

    document.body.append(table);
}
 

Комментарии:

1. Большое вам спасибо! Все здесь давали мне массу потрясающих советов и информации, это действительно потрясающе!

Ответ №2:

Чтобы добавить строковые теги к родительскому тегу,

ParentTag.innerHTML = stringifiedTag;

Надеюсь, это полезно.

   var books = [
    {
        title: 'The Stranger',
        author: 'Albert Camus',
        alreadyRead: true
    },
    {
        title: 'Binging with Babish',
        author: 'Andrew Rea',
        alreadyRead: true
    },
    {
        title: 'You Suck at Cooking: The Absurdly Practical Guide to Sucking Slightly Less at Making Food: A Cookbook',
        author: 'You Suck at Cooking',
        alreadyRead: false
    }];

createTable();

function createTable() {
    var table = document.createElement("table");  //makes a table element for the page
    let innerT = "";
    
    innerT  = "<tr class='firstRow'><th>Title</th><th>Author</th><th>Read?</th></tr>";  //adds the first row that contains the sections for the table

    for (var i = 0; i < books.length; i  )  //loops through the array 
    {
        //add info from the array into this
        innerT  = "<tr><td>"   books[i].title   "</td><td>";
    }
    table.innerHTML = innerT;
    
    document.body.append(table);
} 

Комментарии:

1. @DarwinWatterson Добро пожаловать! Если вы считаете, что это полезно, пожалуйста, выберите мой ответ! 🙂

Ответ №3:

вам нужно использовать insertAdjacentHTML(), а не ‘ =

пример :

        var books = [
        {
            title: 'The Stranger',
            author: 'Albert Camus',
            alreadyRead: true
        },
        {
            title: 'Binging with Babish',
            author: 'Andrew Rea',
            alreadyRead: true
        },
        {
            title: 'You Suck at Cooking: The Absurdly Practical Guide to Sucking Slightly Less at Making Food: A Cookbook',
            author: 'You Suck at Cooking',
            alreadyRead: false
        }];
    
    
    function createTable() {
        let table = document.createElement("table");  //makes a table element for the page
        
        table.insertAdjacentHTML("beforeend","<tr class='firstRow'><th>Title</th><th>Author</th><th>Read?</th></tr>"); //adds the first row that contains the sections for the table
    
        for (var i = 0; i < books.length; i  )  //loops through the array 
        {
            //add info from the array into this
            table.insertAdjacentHTML("beforeend","<tr><td>"   books[i].title   "</td><td>");
        }
    
        document.body.append(table);
    }
    
    createTable(); 

Комментарии:

1. @DarwinWatterson добро пожаловать, не забудьте прочитать больше о insertAdjacentHTML, который так полезен