У меня есть следующий кусок HTML:

    <tr id="shared_event_propsrow1">
        <td class="field-public">
            &nbsp;
        </td>
        <td class="field-required">
            &nbsp;
        </td>
        <td class="field-number">
            12.
        </td>
        <td class="field-label">
            <label class="wrapable" for="shared_event_propsname">
                Sponsor name (5):
                <span style="display:none;">&nbsp;Step 12.</span>
                <span style="display:none;">Maximum input length is 255 characters.</span>
            </label>
        </td>
    </tr>
    <tr id="shared_event_propsrow2">
        <td colspan="2">&nbsp; </td>
        <td>&nbsp;</td>
        <td class="field-input">
            <input name="shared_event_propsprop_sponsor_5.field" id="shared_event_propsprop_sponsor_5.field" value="" size="60" maxlength="255">
        </td>
    </tr>

Теперь эта CMS по какой-то странной причине имеет несколько tr с одинаковыми чередующимися идентификаторами shared_event_propsrow1 и shared_event_propsrow2, а все элементы label используют одинаковые for= и {{ X5}} в той же таблице на той же странице ... тьфу ... так что я пытаюсь нацелиться на эту часть:

        <label class="wrapable" for="shared_event_propsname">
            Sponsor name (5):
            <span style="display:none;">&nbsp;Step 12.</span>
            <span style="display:none;">Maximum input length is 255 characters.</span>
        </label>

И переименуйте имя спонсора (5) в Cash and Checks:

Но единственное, что я вижу, на что я могу нацелиться - это id, который живет в tr после него <input name="shared_event_propsprop_sponsor_5.field" id="shared_event_propsprop_sponsor_5.field" value="" size="60" maxlength="255">

Я изо всех сил пытаюсь найти правильные слова, чтобы искать в Google что-то, что может сделать то, что я пытаюсь сделать.

Любая помощь с благодарностью! Спасибо

0
SorryEh 25 Окт 2019 в 20:46

2 ответа

Лучший ответ

Как и предложила еретическая обезьяна, вы можете настроить таргетинг на сам текст:

$(function(){
  $('label:contains(Sponsor name (5))').text('Cash and Cheques');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<tr id="shared_event_propsrow1">
        <td class="field-public">
            &nbsp;
        </td>
        <td class="field-required">
            &nbsp;
        </td>
        <td class="field-number">
            12.
        </td>
        <td class="field-label">
            <label class="wrapable" for="shared_event_propsname">
                Sponsor name (5):
                <span style="display:none;">&nbsp;Step 12.</span>
                <span style="display:none;">Maximum input length is 255 characters.</span>
            </label>
        </td>
    </tr>
    <tr id="shared_event_propsrow2">
        <td colspan="2">&nbsp; </td>
        <td>&nbsp;</td>
        <td class="field-input">
            <input name="shared_event_propsprop_sponsor_5.field" id="shared_event_propsprop_sponsor_5.field" value="" size="60" maxlength="255">
        </td>
    </tr>
1
Robert McKee 25 Окт 2019 в 18:14

Вы можете попробовать что-то querySelectorAll как это let elements = document.body.querySelectorAll("table tr > td > label. wrapable");

0
Patrick Fopa 25 Окт 2019 в 18:00