Как на чистом 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, время: 04:17. |