Почему Google Chrome мне добавляет tag tbody?

У меня есть два подмостков, которые создаются и наполняются через событие.

Я считаю разработанным стиль таблицы для того, чтобы ты остановил линию, красьтесь мишени:

table {

border-collapse: collapse;
width: 100%;

}

td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}

tr:nth-child(even) {
background-color: #dddddd;
}

Но благодаря тому, что Chrome добавляет мне tbody из-за каждого tag <tr> в первой таблице (back-end) я не функционирует css.

Первая таблица наполняется данными с back-end:

var prueba = {};
        prueba = nuevaCadena[nuevaCadena.length - 1].replace(/<br>/g, "").split(",");
        prueba.venta = prueba[0];
        prueba.fecha = prueba[1];
        prueba.heladeria = prueba[2];

        //prueba.base.split(",");

        //if (myElem === null) {
        var contenido = document.getElementById("contenido");
        var tr2 = document.createElement("TR");


        if (contenido.getElementsByTagName("TH").length === 0)
        {
            contenido.appendChild(tr2);
            tr2.innerHTML += "<th>Heladeria</th>";
            tr2.innerHTML += "<th>Fecha</th>";
            tr2.innerHTML += "<th>ID</th>";

        } else {
           var template = "<tr><td>{{heladeria}}</td><td>{{fecha}}</td><td>{{venta}}</td></tr>";

            document.querySelector('#contenido').innerHTML +=       Mustache.render(template, prueba);

       }

И вторая, которая функционирует верно, берет данные с tag <select>:

var contenido = document.getElementById("contenido2");
var tr2 = document.createElement("TR");

var tr = document.createElement("TR");
if (contenido.getElementsByTagName("TH").length === 0)
{
    contenido.appendChild(tr2);
    tr2.innerHTML += "<th>Heladeria</th>";
    tr2.innerHTML += "<th>Fecha</th>";
    tr2.innerHTML += "<th>Sabor</th>";
    tr2.innerHTML += "<th>Cantidad</th>";

}

//var head = document.createElement("TH");

contenido.appendChild(tr);

//var th = document.createElement("TD");
var option = ["heladerias", "sabores"];
var valor = document.getElementById("sabor_calorias");
var fecha = document.getElementById("fecha");


for (var i = 0; i <= 0; i++) {

    var input = document.getElementById(option[i]).selectedIndex;
    var input2 = document.getElementById(option[i]).options;

    tr.innerHTML += "<td>" + input2[input].text + "</td>";
    tr.innerHTML += "<td>" + fecha.value + "</td>";

    for (var j = 1; j <= 1; j++) {

        input = document.getElementById(option[j]).selectedIndex;
        input2 = document.getElementById(option[j]).options;
        tr.innerHTML += "<td>" + input2[input].text + "</td>";
        tr.innerHTML += "<td>" + valor.value + "</td>";
        tr.innerHTML += "<input type='button' class='borrar' value='x' onclick='deleted(this)'/>";

    }


}

Результат - следующий:

introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí

3
задан 14.02.2017, 15:56
0 ответов

para tu ejemplo si el modelo se llama Proveedor el codigo podria ser como el sigueinte:

@model IEnumerable<Models.Proveedor>
<table class="table">
    <tr>
        <td>ProveedorId</td>
        <td>Razón Social</td>
        <td>Documento Identidad</td>
        <td>Número documento</td>
        <td>Dirección</td>
        <td>Teléfono</td>
        <td></td>
        <td></td>
    </tr>
@foreach (var item in Model) {
<tr>
        <td>
  @Html.DisplayFor(modelItem => item.ProveedorId)
        </td>
      <td>
  @Html.DisplayFor(modelItem => item.razonSocial)
        </td>
      <td>
  @Html.DisplayFor(modelItem => item.docId)
        </td>
      <td>
  @Html.DisplayFor(modelItem => item.numId)
        </td>
      <td>
  @Html.DisplayFor(modelItem => item.direccion)
        </td>
      <td>
  @Html.DisplayFor(modelItem => item.telefono)
        </td>
</tr>
}
</table>
---- -----121--------18263----

http://htmlhelp.com/reference/html40/tables/tbody.html :

Определение элемента TBODY un grupo de filas de datos en una tabla. У вас есть все, что нужно для TBOY, когда вы работаете с TFOOT opcional. La etiqueta final TBODY siempre es opcional.

Osea, en simples palabras, el TBODY siempre esta ahí, aunque no lo hayas incalido. Вы знаете, что это не так, как и прежде, и что вы делаете.

Tomado de: https: // stackoverflow. com / questions / 938083 / why-do-browsers-insert-tbody-element-to-table-elements

Pero ayudando решает проблему, te dejo este codigo, espero te sirva.

 table {border-collapse : коллапс; ширина: 100%; } td, th {border: 1px solid #dddddd; выравнивание текста: слева; обивка: 8px; } tr: nth-child (even) {background-color: #dddddd; } 
 <таблица>    1     2     3     4     5     6     
3
ответ дан 03.12.2019, 17:03
  • 1
    Но из-за которого вторая пластина не добавляет tbody –  14.02.2017, 16:09
  • 2
    Кроме того пластина поверила, что с javascript. уже это увидела ссылка stackoverflow, которую ты переместил меня. Спасибо равный. –  14.02.2017, 16:12
  • 3
    Если, ссылка, ответа он соответствует, я подумал, что ты хотел ответ в españ ol. На вопросе, комментария, мне irí в má s из-за формы в как оружие пластина, в пластине ты используешь Mustage, где ты происходишь, сдержись render и результат - пластина с tbody, И в другой пластине (после какого-то набора select, segú n ты показываешь) ты вооружаешь ее " appendeando" td' s –  14.02.2017, 16:20
  • 4
    Если, я подумал то же самое, но я не нахожу раствор я попробовал argregandole tbody в пластину, но не решается проблема. Ademá s в твоем có я говорю только agregá s линии и не колонны... –  14.02.2017, 16:37