Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   перевод таблицы в массив (https://javascript.ru/forum/misc/51688-perevod-tablicy-v-massiv.html)

Cache 16.11.2014 00:36

Aetae, krutoy, в принципе рабочий код, я уже запостил выше, позаимствовав у krutoy строку .replace(/<[^>]+>/g, '')
на данном примере все работает отлично, дальше - буду тестить
Спасибо за помощь
Впрочем, если кто предложит более оптимальный вариант обработки, буду оч. благодарен

Aetae 16.11.2014 00:40

var htm='<tbody style="outline: 1px solid blue;">            <tr>        <td class="complKnowlege" style="vertical-align:middle;text-align:center">         1        </td>        <td class="complKnowlege" style="vertical-align:middle;">         АБС  "ЭНИКЕЙЩИКИ И КО"        </td>        <td style="vertical-align:middle;">         ЮЛ        </td>                 <td style="vertical-align:middle;">          032600003909         </td>                <td style="vertical-align:middle;">         000240014809        </td>        <td style="vertical-align:middle;">         11.02.2000        </td>        <td style="vertical-align:middle;">                 </td>        <td class="complKnowlege" style="vertical-align:middle;">                 </td>                 <td class="complKnowlege" style="vertical-align:middle;">         Дата :<span class="grayText">05.06.2009 </span> Тип :<span class="grayText">Признан недействительным </span>        </td>       </tr>             <tr>        <td class="complKnowlege" style="vertical-align:middle;text-align:center">         1        </td>        <td class="complKnowlege" style="vertical-align:middle;">         АБС  "ЭНИКЕЙЩИКИ И КО"        </td>        <td style="vertical-align:middle;">         ЮЛ        </td>                 <td style="vertical-align:middle;">          032600003909         </td>                <td style="vertical-align:middle;">         000240014809        </td>        <td style="vertical-align:middle;">         11.02.2000        </td>        <td style="vertical-align:middle;">                 </td>        <td class="complKnowlege" style="vertical-align:middle;">                 </td>                 <td class="complKnowlege" style="vertical-align:middle;">         Дата :<span class="grayText">05.06.2009 </span> Тип :<span class="grayText">Признан недействительным </span>        </td>       </tr>          </tbody>';
 


if (!String.prototype.trim) {
   String.prototype.trim = (function(rtrim){
      return function trim(){
         return this.replace(rtrim, '');
      }
   }(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g));
}
if (!Array.prototype.map) {
   Array.prototype.map = function(mapper, that) {
      var other = new Array(this.length);
      for (var i = 0, n = this.length; i < n; i++)
         if (i in this)
            other[i] = mapper.call(that, this[i], i, this);
      return other;
   };
}

function parse(htm){
   return htm.split(/<\/tr[^>]*>\s*<tr[^>]*>/).map(function(row){
      return row.split(/<\/td[^>]*>\s*<td[^>]*>/).map(function(cell){
         return cell.replace(/<[^>]+>/g, '').trim()
      })
   })
}

alert(JSON.stringify(
   parse(htm)
, null, '\t'))

JSON тут только для отображения результатов.

И всё же я настоятельно рекомендую не парсить html регулярками, а поступить как я сказал коммент назад, т.к. всегда есть шанс нарваться на подводные камни.

Cache 16.11.2014 00:58

Цитата:

Сообщение от Aetae (Сообщение 341094)
JSON тут только для отображения результатов.

И всё же я настоятельно рекомендую не парсить html регулярками, а поступить как я сказал коммент назад, т.к. всегда есть шанс нарваться на подводные камни.

я, кстати - ошибся, на JSON приложение не ругается, значит не работает только с куками и DOM'ом, в т.ч. с document.
Спасибо.. присмотрюсь к вашему решению, хотя, на данном этапе реализации, мой вариант несколько компакней и предположительно - его вполне хватает для поставленной задачи

Aetae 16.11.2014 01:06

Cache, ты сказал что рядов может быть несколько - тогда твой вариант сломается - эт раз.
Попробуй убрать из кода полифилы Array.prototype.map и String.prototype.trim. Если JSON работает то и они скорее всего не нужны. Тогда код всего 6 строк - эт два.)


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