Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.02.2023, 18:13
Кандидат Javascript-наук
Отправить личное сообщение для firsmember Посмотреть профиль Найти все сообщения от firsmember
 
Регистрация: 08.11.2019
Сообщений: 113

Вынести все input под label
Доброго вечера многоуважаемые!
Я к вам с вопросом..

Подскажите пожалуйста, имею:
<div class="radioinputsblock">
  <label for="blabla1" class="radio label">
    <input type="radio" id="" name="progress" value="blabla1"  data-price-type="normal" data-price="5000" required="">
Я текст
  </label>
<label for="blabla2" class="radio label">
    <input type="radio" id="" name="progress" value="blabla2"  data-price-type="normal" data-price="5000" required="">
Я текст
  </label>
</div>

Радио кнопок в блоке .radioinputsblock может быть любое количество с любыми данными кроме них в блоке могут лежать и другие блоки,
Нужно только вынести все input из своих label и поместить каждый input над свой label, а также взять скопировать у каждого переносимого input - value в его id

Чтобы получилось вот так:
<div class="radioinputsblock">

<input type="radio" id="blabla1" name="progress" value="blabla1"  data-price-type="normal" data-price="5000" required="">
  <label for="blabla1" class="radio label">
Я текст
  </label>
<input type="radio" id="blabla2" name="progress" value="blabla2"  data-price-type="normal" data-price="5000" required="">
<label for="blabla2" class="radio label">
Я текст
  </label>
</div>


Заранее большое вам спасибо !

Последний раз редактировалось firsmember, 18.02.2023 в 18:28.
Ответить с цитированием
  #2 (permalink)  
Старый 18.02.2023, 18:26
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,704

Что то типа такого
const block = document.querySelector('.radioinputsblock');
const inputs = block.querySelectorAll('input');
for (const input of inputs) {
	const label = input.closest('label');
	label.before(input);
}


А зачем?
Ответить с цитированием
  #3 (permalink)  
Старый 18.02.2023, 18:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

firsmember,
document.addEventListener("DOMContentLoaded", function() {
            for (const label of document.querySelectorAll(".radioinputsblock label")) {
                const { control} = label;
                label.after(control)
            }
        })
Ответить с цитированием
  #4 (permalink)  
Старый 18.02.2023, 18:31
Кандидат Javascript-наук
Отправить личное сообщение для firsmember Посмотреть профиль Найти все сообщения от firsmember
 
Регистрация: 08.11.2019
Сообщений: 113

Спасибо!)

Последний раз редактировалось firsmember, 18.02.2023 в 18:37.
Ответить с цитированием
  #5 (permalink)  
Старый 18.02.2023, 18:38
Кандидат Javascript-наук
Отправить личное сообщение для firsmember Посмотреть профиль Найти все сообщения от firsmember
 
Регистрация: 08.11.2019
Сообщений: 113

Круто! Выглядит получше!)
Ответить с цитированием
  #6 (permalink)  
Старый 18.02.2023, 18:38
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,704

const block = document.querySelector('.radioinputsblock');
const inputs = block.querySelectorAll('input');
for (const input of inputs) {
	const label = input.closest('label');
	label.before(input);
	input.id = input.value;
}
Ответить с цитированием
  #7 (permalink)  
Старый 18.02.2023, 18:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

firsmember,
document.addEventListener("DOMContentLoaded", function() {
            for (const label of document.querySelectorAll(".radioinputsblock label")) {
                const { firstElementChild : input} = label;
                 input.id = input.value;
                 label.before(input);
            }
        })
Ответить с цитированием
  #8 (permalink)  
Старый 18.02.2023, 18:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от voraa
А это точно сработает?
для первоначального варианта с for и id да, без этого нет.
Ответить с цитированием
  #9 (permalink)  
Старый 18.02.2023, 18:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

voraa,
вначале было input под label и были корректные id и for
<!DOCTYPE html>
<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
    label{
        border: 1px solid red;
    }

    </style>
    <script>
        document.addEventListener("DOMContentLoaded", function() {
            for (const label of document.querySelectorAll(".radioinputsblock label")) {
                const { control } = label;
                label.after(control)
            }
        })
    </script>
</head>

<body>
    <div class="radioinputsblock">
        <label for="blabla1" class="radio label">
    <input type="radio" id="blabla1" name="progress" value="blabla1"  data-price-type="normal" data-price="5000" required="">
Я текст
  </label>
        <label for="blabla2" class="radio label">
    <input type="radio" id="blabla2" name="progress" value="blabla2"  data-price-type="normal" data-price="5000" required="">
Я текст
  </label>
    </div>
</body>

</html>

Последний раз редактировалось рони, 18.02.2023 в 18:57.
Ответить с цитированием
  #10 (permalink)  
Старый 18.02.2023, 18:58
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,704

И все равно не понимаю, зачем писать
const { firstElementChild : input} = label;
вместо
const input = label.firstElementChild;
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт под input never3d22 Элементы интерфейса 0 18.04.2016 14:45
Пустой file input суссесфул или не successful? kostyanet Элементы интерфейса 1 08.01.2015 17:56
Что означает [^] riva Общие вопросы Javascript 26 07.08.2014 20:42
Webshtorm под линуксом. Отладка. eugenk Общие вопросы Javascript 2 09.01.2014 02:52
Зависают браузеры под masOS X Falcon Общие вопросы Javascript 8 11.11.2010 23:14