Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.05.2020, 18:44
Интересующийся
Отправить личное сообщение для IgorFomenko Посмотреть профиль Найти все сообщения от IgorFomenko
 
Регистрация: 07.05.2020
Сообщений: 19

как задать рамку ячеек заголовка таблицы после ее создания
Здравствуйте, слишком долго ищу ответ на такой простой вопрос.
Создаю таблицу при помощи JS, хочу назначить стили не во время создания таблицы (с этим проблем нет td.style.border = '1px solid black' ), а хочу сделать это после. Итак, вопрос, как назначить всем ячейкам td заголовка th таблицы tbl style.border = '1px solid black' без банального перебора в цикле всех td принадлежащих th. Может есть пример с nth()?

Последний раз редактировалось IgorFomenko, 14.05.2020 в 18:59.
Ответить с цитированием
  #2 (permalink)  
Старый 14.05.2020, 19:05
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от IgorFomenko
всем ячейкам td заголовка th таблицы
Это как понимать? Ячейки заголовка, это и есть th, вот и укажите в CSS стили для них.
Ответить с цитированием
  #3 (permalink)  
Старый 14.05.2020, 19:09
Интересующийся
Отправить личное сообщение для IgorFomenko Посмотреть профиль Найти все сообщения от IgorFomenko
 
Регистрация: 07.05.2020
Сообщений: 19

Я хочу хотя бы добиться рамки вокруг header так
th.style.border = '1px solid black'
но результат нулевой,
tbl.style.border = '2px solid black' работает
Ответить с цитированием
  #4 (permalink)  
Старый 14.05.2020, 19:13
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

А почему не?

table {
     border-collapse: collapse;
}

th {
     border: 1px solid #000;
     /* прочие стили */
}
Ответить с цитированием
  #5 (permalink)  
Старый 14.05.2020, 19:15
Интересующийся
Отправить личное сообщение для IgorFomenko Посмотреть профиль Найти все сообщения от IgorFomenko
 
Регистрация: 07.05.2020
Сообщений: 19

Я пишу функцию, которая создаст таблицу программно. И вся стилистика будет заложена внутри функции.
Ответить с цитированием
  #6 (permalink)  
Старый 14.05.2020, 19:18
Интересующийся
Отправить личное сообщение для IgorFomenko Посмотреть профиль Найти все сообщения от IgorFomenko
 
Регистрация: 07.05.2020
Сообщений: 19

Конечно я могу создать стиль программно, применить его к таблице, а потом даже удалить, но мне казалось, что можно обойтись без этого.
Ответить с цитированием
  #7 (permalink)  
Старый 14.05.2020, 19:27
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

<table style="border-collapse: separate;">
    <tr>
        <th style="border: 1px solid #f00;">11111</th>
    </tr>
    <tr>
        <td style="border: 1px solid #00f;">22222</td>
    </tr>
</table>


А если сказанное выше надо понимать как <tr тут прописать стили для ее ячеек>, то конечно нельзя.

PS. То есть, вы можете указать общий стиль для ячеек строки, но без явного указания стиля ячейки "наследовать от родителя" не получится.

<table style="border-collapse: separate;">    
    <tr style="border: 1px solid #f00;">
        <th>без бордюра</th>
        <th style="border: inherit;">с бордюром</th>
    </tr>
</table>


Если я правильно понял смысл вопроса.

Последний раз редактировалось laimas, 14.05.2020 в 19:38.
Ответить с цитированием
  #8 (permalink)  
Старый 14.05.2020, 19:35
Интересующийся
Отправить личное сообщение для IgorFomenko Посмотреть профиль Найти все сообщения от IgorFomenko
 
Регистрация: 07.05.2020
Сообщений: 19

Вы предлагаете HTML вариант, а я пишу JS код!
function fromArrayOfObj(obj) {
    let tr, td, NR = obj.length, body = document.body
//table
    let tbl = document.createElement('table')
    tbl.id = 'table';
//caption
    let tcap = tbl.createCaption();
    tcap.innerHTML = "Сотрудники";
//header
    let th = tbl.createTHead();
    th.style.border = '1px solid black';
    tr = th.insertRow();
    for (var key in obj[0]) {
           td = tr.insertCell();
//         td.style.border = '1px solid black';
//         td.style.fontWeight = 'bold';
//         td.style["text-align"] = 'center';

        td.appendChild(document.createTextNode(key));
    }
//fill table
    for (var i = 0; i < NR; i++) {
        tr = tbl.insertRow();
        for (var key in obj[0]) {
            td = tr.insertCell();
            td.appendChild(document.createTextNode(obj[i][key]));
            td.style.border = '1px solid black';
        }
    }
//apply styles
//     tbl.style.border = '2px solid black';
//     tbl.style.borderCollapse = 'collapse';

    body.appendChild(tbl);
}
Ответить с цитированием
  #9 (permalink)  
Старый 14.05.2020, 19:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

... хотел бы я увидеть border у head, возможно это нереально, пока знаю одно решение: красить по контуру бока ячеек внутри head.

<!DOCTYPE HTML>
<html>
 <head>
  <meta charset="utf-8">
  <title>Тег THEAD</title>
  <style type="text/css">
   td{
       height: 50px;
   }

  </style>
 </head>
 <body>

  <table style="width: 600px; border-collapse: collapse">
   <thead style="background: #fc0; box-sizing: border-box">
    <tr>
     <td style="border: 1px solid #000000; border-right: none"> ... </td>
     <td style="border: 1px solid #000000; border-right: none; border-left: none;"> ... </td>
     <td style="border: 1px solid #000000; border-left: none;"> ... </td>
    </tr>
   </thead>
   <tbody style="background: #ccc">
    <tr>
     <td> ... </td>
     <td> ... </td>
     <td> ... </td>
    </tr>
   </tbody>
  </table>

 </body>
</html>

Последний раз редактировалось рони, 14.05.2020 в 19:47. Причина: добавил макет
Ответить с цитированием
  #10 (permalink)  
Старый 14.05.2020, 19:41
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от IgorFomenko
Вы предлагаете HTML вариант, а я пишу JS код!
Стилями заведует иной движок, а не html и JS. Вы посредством JS только прописываете стили в атрибуте, а не "рисуете бордюры" на JS.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как задать порядок нахождения querySelectorAll pokk Общие вопросы Javascript 9 26.10.2018 17:43
Как сделать, чтоб сохранилась созданная javascript'ом кнопка после обновления стр.? IDigle1 Общие вопросы Javascript 10 27.06.2017 01:24
Как задать дату отсчета таймера? Exhumed Элементы интерфейса 2 21.06.2016 14:49
Как передать товар из таблицы в форму всплывающего окна? sprint007 Элементы интерфейса 3 03.12.2014 16:04
Задать имя таблицы в SELECT из переменной rudolfe Серверные языки и технологии 7 24.06.2013 16:46