Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Вопрос на засыпку (интересная задачка) (https://javascript.ru/forum/dom-window/71481-vopros-na-zasypku-interesnaya-zadachka.html)

espltd 22.11.2017 14:21

Вопрос на засыпку (интересная задачка)
 
Всем добрый день, подскажите. Столкнулся с такой интересной задачкой, как решить, вообще не представляю.

На сайте есть таблицы характеристик.

У какого-то товара таблица сделана в 3 столбца, у какого-то в 2.

Вот пример, та же таблица, только без рамки. Первая - правильная в 3 столбца. Вторая(ниже) не правильная, т.к. она в 2 столбца.


--------------------------------------------------------
Количество шпинделей --------- шт ---------- 5
Диаметры шпинделей --------- мм ---------- 40
Диаметр фрез наружный ------- мм ------ 110...145
--------------------------------------------------------


--------------------------------------------------------
Количество шпинделей, шт -------- 5
Диаметры шпинделей, мм ---------- 40
Диаметр фрез наружный, мм ------- 110...145
--------------------------------------------------------

можно ли написать какой-то код, чтобы он вторую таблицу(не правильную) сделал такого же вида как первая? Т.е. добавился в средине еще один столбец, и окончания из первых ячеек( шт, мм, об) перенеслись в этот средний столбец, чтобы обе таблицы выглядели одинаково. А то блин один манагер нормально заполнил, а другой, нет. Сейчас мучаюсь.

ksa 22.11.2017 14:39

Цитата:

Сообщение от espltd
можно ли написать какой-то код, чтобы он вторую таблицу(не правильную) сделал такого же вида как первая?

Можно. :yes:
Только нужно знать с каким контентом ты имеешь дело.

espltd 22.11.2017 15:01

ну тут наверное контент не принципиален полностью, в принципе наверное достаточно если с конца строки будет срезать 5 символов например, и тогда сюда подайдут и шт, мм, см, об/мин, и еще некоторые, главное выцепить их и отобразить в среднем столбце, т.е. как бы вырезать из левого столбца (из ячеек) и проставить в среднее. Подскажи пожалуйста, как можно подобное реализовать, такая задачка мне не по зубам, хотя бы принцип работы понять

Dilettante_Pro 22.11.2017 15:02

задача банальная
<table border="1">
   <tr>
      <td>Количество шпинделей, шт</td>
      <td>5</td>
   </tr>
   <tr>
      <td>Диаметры шпинделей, мм</td>
      <td>40</td>
   </tr> 
   <tr>
      <td>Диаметр фрез наружный, мм</td>
      <td>110...145</td>
   </tr>
</table>
<script>
   var rows = document.querySelectorAll('tr');
   for(var i = 0;i < rows.length; i++) {
      var cellNew = document.createElement('td');
      var cell1 = rows[i].children[0];
      var values = (cell1.innerText).split(',');
      cell1.innerText =values[0];
      cellNew.innerText =values[1];
     rows[i].insertBefore(cellNew, rows[i].children[1]);
   }
</script>

Не проще ли обработать исходные данные?

espltd 22.11.2017 15:13

я javascript в процессе изучения. Я понял, что вы написали, сам не додумался) Спасибо, на данный момент, мне это должно помочь, потом обработаем входные данные.

espltd 22.11.2017 15:16

Почему-то на сайте не работает, после запятой срезает символы, а новый столбец с ячейками не отображается, видимо не создается

espltd 22.11.2017 15:19

там структура таблицы получается

table > thbody > tr > td

но вот понял еще один момент, также есть обозначения, которые идут не после запятой, а просто после пробела в скобках (мм). Блин, что ж делать

ksa 22.11.2017 15:47

Цитата:

Сообщение от espltd
ну тут наверное контент не принципиален полностью

Ты спец - тебе видней...

ksa 22.11.2017 15:47

Цитата:

Сообщение от espltd
Блин, что ж делать

Повторюсь
Цитата:

Сообщение от ksa
нужно знать с каким контентом ты имеешь дело


espltd 22.11.2017 15:53

ну смотри, вот например рабочая таблица. Скидываю скрин. Контент практически у всех такой.



у неё столбца среднего нет, тут все обозначения в скобках, а в других некоторых таблицах они не в скобках, а после запятой, вот мне и надо досоздать столбец в средине и эти обозначения перенести туда.

Первый вариант кода, который прислал Dilettante_Pro почему-то не робит((


Часовой пояс GMT +3, время: 21:38.