#javascript #jquery #html #css #html-table
#javascript #jquery #HTML #css #html-таблица
Вопрос:
У меня есть таблица, которая является расписанием. Я хочу, чтобы две или более одинаковых задач следовали друг за другом, чтобы граница между ними проходила. (Это я сделал). Также я хочу, чтобы текст был центрирован в середине таблицы.
Смотрите Пример для пояснения:
var tds = document.querySelectorAll("td")
for (var o = 0; o < tds.length; o ) {
if ($(tds[o]).next().html() === $(tds[o]).html() amp;amp; $(tds[o]).prev().html() === $(tds[o]).html()) {
$(tds[o]).css("borderRight", "none");
$(tds[o]).css("borderLeft", "none");
} else if ($(tds[o]).next().html() === $(tds[o]).html()) {
$(tds[o]).css("borderRight", "none");
} else if ($(tds[o]).prev().html() === $(tds[o]).html()) {
$(tds[o]).css("borderLeft", "none");
}
}
table {
border-collapse: collapse;
}
td {
border: 2px solid grey;
padding: 25px;
text-align: center;
}
th {
border: 2px solid grey;
padding: 25px;
text-align: center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<thead>
<tr>
<th>1:00</th>
<th>2:00</th>
<th>3:00</th>
<th>4:00</th>
<th>5:00</th>
<th>6:00</th>
</tr>
</thead>
<tbody>
<tr>
<td>Sleep</td>//Should Only be one "Sleep" and it should be centered through all the "Sleep td"
<td>Sleep</td>
<td>Sleep</td>
<td>Sleep</td>
<td>Sleep</td>
<td>Wake Up</td>
</tr>
</tbody>
</table>
Комментарии:
1. Вы ищете
colspan
2. Я настоятельно рекомендую НЕ использовать o в качестве приращения в вашей функции — wayyyyy слишком легко прочитать его позже (или в SO) как ноль — т.е.: tds[o] vs tds[0] — очевидно, когда вы видите его рядом, но когда вы читаете его вне контекста или пытаетесьдля отладки нужно легко увидеть tds[o] и подумать, что он ссылается на первый td (т.Е. Индекс [0]). Просто мой 0pinion . …. посмотрите, что я там сделал 🙂
Ответ №1:
Использовать colspan
.
var tds = document.querySelectorAll("td")
for (var o = 0; o < tds.length; o ) {
if ($(tds[o]).next().html() === $(tds[o]).html() amp;amp; $(tds[o]).prev().html() === $(tds[o]).html()) {
$(tds[o]).css("borderRight", "none");
$(tds[o]).css("borderLeft", "none");
} else if ($(tds[o]).next().html() === $(tds[o]).html()) {
$(tds[o]).css("borderRight", "none");
} else if ($(tds[o]).prev().html() === $(tds[o]).html()) {
$(tds[o]).css("borderLeft", "none");
}
}
table {
border-collapse: collapse;
}
td {
border: 2px solid grey;
padding: 25px;
text-align: center;
}
th {
border: 2px solid grey;
padding: 25px;
text-align: center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<thead>
<tr>
<th>1:00</th>
<th>2:00</th>
<th>3:00</th>
<th>4:00</th>
<th>5:00</th>
<th>6:00</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="5">Sleep</td> //Should Only be one "Sleep" and it should be centered through all the "Sleep td"
<td>Wake Up</td>
</tr>
</tbody>
Ответ №2:
Просто удалите все
<td>Sleep</td>
И вставляем:-
<td colspan="5">Sleep</td>