Как на чистом JS изменить датасет
Есть такая строка:
<option value="" data-settings="{"related":"17","math":"400"}">......</option> Надо изменить значение атрибута data-settings "math" c "400" на "0". Уже всю голову сломал. Нужно именно на js, не квери, решение с регуляркой и тп не подходит. Спасибо! |
"{"related":"17","math":"400"}"
Что это такое? Значением атрибута должно быть строка. У вас значение будет только первая скобка "{" |
Ops,
let data = JSON.parse(option.dataset.settings); data.math = 0; option.dataset.settings = JSON.stringify(data); |
рони,
<select> <option value="" data-settings="{"related":"17","math":"400"}">......</option> </select> <script> const option = document.querySelector('option'); alert(option.dataset.settings) </script> Какой там JSON может быть. |
voraa пишу поверх чужого кода, который я не могу трогать, но он передаёт параметр в датасете, за это и зацепился
рони, похоже на правду, Вы всегда точно подсказываете. Еще вопрос, что бы тему не заводить. Как добраться js до option value в селекте. Пока до самого select добрался через класс, а как в нём в 0 - option поменять датасет document.getElementsByClassName("summselect"); |
Цитата:
|
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> |
Часовой пояс GMT +3, время: 06:31. |