Заменить старое значение новым значением, исключая детей - PullRequest
1 голос
/ 20 апреля 2020

Исходный текст A, B, C, D и номер необходимо удалить во внешнем интерфейсе, потому что он мне требуется во внутреннем интерфейсе.

Структура строки таблицы HTML имеет вид это:

<tr ng-repeat="(key, field) in nbd_fields" ng-show="field.enable &amp;&amp; field.published" class="ng-scope">
  <td class="ng-binding">A,B,C,D: 1 - Auswahl Wunschkarte : <b class="ng-binding">Wähle eine Option</b>
  </td>
  <td ng-bind-html="field.price | to_trusted" class="ng-binding"></td>
</tr>

Перед входом:

Before input

Токовый выход:

Current output

Если вы заметили, что выбранный параметр также не отображается. Это из-за $ (window) .load ()?

Требуемый вывод:

Required output

Код, который я использую:

jQuery(".ng-scope td.ng-binding:first-child").text(function(i, oldVal) {
    return oldVal.replace(/^[^-]+ - /,""); 
 });
});

Как сделать так, чтобы он не влиял на тег <b> внутри?

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

Мне пришлось обернуть его вокруг $(window).load(), чтобы изменения вступили в силу после загрузки таблицы. $(document).ready() не работал с ним. Не знаете почему?

* Демо: https://prima-dev.sparxia.world/de/produkt/konfigurator/

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Это не влияет на тег b, ваш код работает, вам просто нужно использовать правильный метод и заменить код HTML, а не текстовые узлы:

jQuery(".nbd-field-header label, .nbo-summary-table .ng-binding").html(function(i, oldVal) {
    return oldVal.replace(/^[^-]+ - /,"");
});
1 голос
/ 20 апреля 2020

(Правка: изменено для соответствия пересмотренному требованию в комментарии ниже.)

Чтобы убрать «все до и включая« - »» из текста ячеек таблицы первого столбца, оставив остальные нетронутыми:

// strip "everything up to and including the '-'"
// from table cell contents
function stripPrefix(tblCell) {
 // only evaluate first td in tr
  if (tblCell.previousElementSibling) {
    return;
  }
  const tNode = tblCell.firstChild;
  // ignore if table cell is empty
  if (!tNode) {
    return;
  }
  const chars = tNode.nodeValue.split('');
  const iFirstDash = chars.indexOf('-');
  if (iFirstDash === -1) { return; }
  tNode.nodeValue = chars.slice(iFirstDash+1).join('');
}

function stripAllPrefixes() {
  const tds = document.getElementsByTagName('td');
  for (const td of tds) {
    stripPrefix(td);
  }
}
td {
  border: 1px solid gray;
}
<h4>Strip "everything up to and including the '-'" from Table Cells</h4>
<table>
  <tr>
    <td>A,B,C,D: 1 - Auswahl Wunschkarte : <b>Wähle eine Option</b></td>
    <td></td>
  </tr>
  <tr>
    <td>B,C,D,E: 20 - A different leader : <b>should also be stripped</b></td>
    <td></td>
  </tr>
  <tr>
    <td>Oops no dash here <b>Just checking</b></td>
    <td></td>
  </tr>

</table>

<button onclick="stripAllPrefixes();">Strip All</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...