Javascript - как получить значение определенной строки или диапазона, когда имя класса используется много раз

<div class = "toggler">
<div class = "ui-widget-content ui-corner-all">
    <h3 class = "ui-widget-header ui-corner-all togglerHeader">
        Retail Customer</h3>
    <div class = "togglerContent">
        <div class = "container container-peloton">
            <div class = "row">
                <div class = "span2 offset2">
                    <input data-val = "true" data-val-required = "The CustomerIsBusiness field is required." disabled = "disabled" id = "rbRetailCustomerIsBusinessYes" name = "Connect.CustomerIsBusiness" type = "radio" value = "True" />
                    <label for = "rbRetailCustomerIsBusinessYes" style = "padding-right: 60px">
                        Business</label>
                </div>
                <div class = "span2">
                    <input checked = "checked" disabled = "disabled" id = "rbRetailCustomerIsBusinessNo" name = "Connect.CustomerIsBusiness" type = "radio" value = "False" />
                    <label for = "rbRetailCustomerIsBusinessNo">
                        Individual</label>
                </div>
            </div>
            <div class = "row">
                <div class = "span6">
                        <div class = "row">
                            <div class = "span2 text-right"><label for = "Connect_CustomerFirstName">First Name</label></div>
                            <div class = "span4">
                                <span class = "readonly-field">Rick</span>

В приведенной выше таблице, как я могу получить значение полей только для чтения, например. «Рик» с использованием Javascript? Я могу получить значение, используя wb.document.getElementsByClassName ("readonly-field"), однако значение строки является динамическим и изменяется. Мне нужно решение, которое ссылается на метку в диапазоне 2.

Использовать идентификатор w3schools.com/css/css_syntax.asp

chevybow 01.08.2018 23:59

Есть мероприятие? Вы нажимаете что-то, что вызывает желание это искать?

Cfreak 02.08.2018 00:01

Идентификаторы @chevybow не должны быть "переходным" способом получения ссылок на DOM. Они достаточно просты, но вы обнаружите, что они создают хрупкие решения, которые не всегда хорошо масштабируются. Кроме того, лучше не использовать W3 Schools, которые, как известно, содержат неполную, устаревшую или полностью неверную информацию, и вместо этого использовать MDN

Scott Marcus 02.08.2018 00:09

Уточните, пожалуйста, что вы ищете. Сначала вы говорите, что вам нужно значение полей .read-only, например «Rick», а затем говорите, что вам нужны элементы label в элементах div, которые используют классы .span2.

Scott Marcus 02.08.2018 00:15

@ScottMarcus Каким будет ваш способ получения произвольного значения диапазона?

chevybow 02.08.2018 00:57

Сначала я должен добавить, что просматриваю эту страницу в Интернете. Я ищу значение полей только для чтения, которых много на странице, но мне нужно там соответствующее значение text / span2 метки.

Joe Glass 02.08.2018 01:02

@chevybow document.querySelector()

Scott Marcus 02.08.2018 04:25

@JoeGlass Как я уже просил, поясните, пожалуйста. В приведенном выше примере элемент .read-only не имеет «соответствующего» значения label или .span2. Какой точно вам нужен. Пожалуйста, будьте предельно ясны.

Scott Marcus 02.08.2018 04:26

@ScottMarcus В заголовке четко указано, «когда имя класса используется много раз». Если есть несколько совпадений, а queryselector просто возвращает первое совпадение - как это решает проблему с использованием уникального идентификатора? Что делать, если вам не нужен первый матч? OP может быть непонятным, но я не уверен, что понимаю ваш подход

chevybow 02.08.2018 06:53
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
9
107
2

Ответы 2

Это пример получения значения с помощью id. Идентификатор должен быть уникальным для каждого элемента

console.info(document.getElementById('sample_id').innerHTML)
<div class = "toggler">
<div class = "ui-widget-content ui-corner-all">
    <h3 class = "ui-widget-header ui-corner-all togglerHeader">
        Retail Customer</h3>
    <div class = "togglerContent">
        <div class = "container container-peloton">
            <div class = "row">
                <div class = "span2 offset2">
                    <input data-val = "true" data-val-required = "The CustomerIsBusiness field is required." disabled = "disabled" id = "rbRetailCustomerIsBusinessYes" name = "Connect.CustomerIsBusiness" type = "radio" value = "True" />
                    <label for = "rbRetailCustomerIsBusinessYes" style = "padding-right: 60px">
                        Business</label>
                </div>
                <div class = "span2">
                    <input checked = "checked" disabled = "disabled" id = "rbRetailCustomerIsBusinessNo" name = "Connect.CustomerIsBusiness" type = "radio" value = "False" />
                    <label for = "rbRetailCustomerIsBusinessNo">
                        Individual</label>
                </div>
            </div>
            <div class = "row">
                <div class = "span6">
                        <div class = "row">
                            <div class = "span2 text-right"><label for = "Connect_CustomerFirstName">First Name</label></div>
                            <div class = "span4">
                                <span class = "readonly-field" id = "sample_id">Rick</span>

Вы захотите использовать element.querySelector() и element.closest(), чтобы иметь действительно динамичный способ получения желаемых результатов.

// First, locate the element with the readonly-field class
let ro = document.querySelector(".readonly-field");

// Then, get it's nearest ancestor that has the row class
let row = ro.closest(".row");

// Then, get the first label that is a child of the row
let lbl = row.querySelector("label");

// Finally, do what you want with that label
console.info(lbl.textContent + ": " + ro.textContent);
<div class = "toggler">
<div class = "ui-widget-content ui-corner-all">
    <h3 class = "ui-widget-header ui-corner-all togglerHeader">
        Retail Customer</h3>
    <div class = "togglerContent">
        <div class = "container container-peloton">
            <div class = "row">
                <div class = "span2 offset2">
                    <input data-val = "true" data-val-required = "The CustomerIsBusiness field is required." disabled = "disabled" id = "rbRetailCustomerIsBusinessYes" name = "Connect.CustomerIsBusiness" type = "radio" value = "True" />
                    <label for = "rbRetailCustomerIsBusinessYes" style = "padding-right: 60px">
                        Business</label>
                </div>
                <div class = "span2">
                    <input checked = "checked" disabled = "disabled" id = "rbRetailCustomerIsBusinessNo" name = "Connect.CustomerIsBusiness" type = "radio" value = "False" />
                    <label for = "rbRetailCustomerIsBusinessNo">
                        Individual</label>
                </div>
            </div>
            <div class = "row">
                <div class = "span6">
                        <div class = "row">
                            <div class = "span2 text-right"><label for = "Connect_CustomerFirstName">First Name</label></div>
                            <div class = "span4">
                                <span class = "readonly-field">Rick</span>
                            </div>
                        </div>
                 </div>
             </div>
         </div>
     </div>
 </div>

Другие вопросы по теме