Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.02.2023, 22:42
Аватар для Ops
Ops Ops вне форума
Аспирант
Отправить личное сообщение для Ops Посмотреть профиль Найти все сообщения от Ops
 
Регистрация: 03.03.2016
Сообщений: 33

Как на чистом JS изменить датасет
Есть такая строка:
<option value="" data-settings="{"related":"17","math":"400"}">......</option>

Надо изменить значение атрибута data-settings "math" c "400" на "0". Уже всю голову сломал.
Нужно именно на js, не квери, решение с регуляркой и тп не подходит.
Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 21.02.2023, 22:46
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

"{"related":"17","math":"400"}"
Что это такое? Значением атрибута должно быть строка.
У вас значение будет только первая скобка "{"

Последний раз редактировалось voraa, 21.02.2023 в 22:50.
Ответить с цитированием
  #3 (permalink)  
Старый 21.02.2023, 22:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Ops,
let data = JSON.parse(option.dataset.settings);
  data.math = 0;
  option.dataset.settings = JSON.stringify(data);
Ответить с цитированием
  #4 (permalink)  
Старый 21.02.2023, 23:25
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

рони,
<select>
<option value="" data-settings="{"related":"17","math":"400"}">......</option>
</select>
<script>
const option = document.querySelector('option');
alert(option.dataset.settings)
</script>

Какой там JSON может быть.
Ответить с цитированием
  #5 (permalink)  
Старый 21.02.2023, 23:28
Аватар для Ops
Ops Ops вне форума
Аспирант
Отправить личное сообщение для Ops Посмотреть профиль Найти все сообщения от Ops
 
Регистрация: 03.03.2016
Сообщений: 33

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

рони, похоже на правду, Вы всегда точно подсказываете.

Еще вопрос, что бы тему не заводить. Как добраться js до option value в селекте. Пока до самого select добрался через класс, а как в нём в 0 - option поменять датасет
document.getElementsByClassName("summselect");
Ответить с цитированием
  #6 (permalink)  
Старый 21.02.2023, 23:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от voraa
Какой там JSON может быть.
кавычки неправильные из-за копирования у автора.
Ответить с цитированием
  #7 (permalink)  
Старый 21.02.2023, 23:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Ops,
<!DOCTYPE html>
<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
    </style>
    <script>
        document.addEventListener("DOMContentLoaded", function() {
            let option = document.querySelector(".summselect option");// для нулевого можно так или так
            //let option = document.querySelector(".summselect option:nth-child(1)"); менять номер 1 для нужного, отсчёт с 1
           // let option = document.querySelector(".summselect").options[0];  отсчёт с нуля

 let data = JSON.parse(option.dataset.settings);
            data.math = 0;
            option.dataset.settings = JSON.stringify(data);
            alert(option.dataset.settings);
        })
    </script>
</head>

<body>
<select name="" class="summselect">
<option value="" data-settings='{"related":"17","math":"400"}'>......</option>
</select>
</body>

</html>

Последний раз редактировалось рони, 21.02.2023 в 23:43.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как совместить данные php с js? deman1 Javascript под браузер 4 29.08.2021 20:39
Как сделать свой слайдер на чистом js? sashka7onoff Элементы интерфейса 15 10.07.2017 23:35
Модальное окно, запретить скролл всему документу на чистом JS TommyWork Общие вопросы Javascript 8 13.04.2017 10:39
Как на чистом js добавить в объект другой объект? An1984tonn Общие вопросы Javascript 2 23.01.2017 21:02
Как подключить данные с PHP по средствам JS на удаленный сервер. Nyam Элементы интерфейса 13 11.04.2014 17:14