Как динамически установить Javascript style.tranform="scale"

Я объявил переменную var scale=0.8 в скрипте в теле моего html, и когда я изменяю размер графика, сделанного русалкой, я соответствующим образом обновляю масштаб, например

<script>
var scale=0.8;
DeployGraph(); 

function toggleZoomScreen(mode){
if (mode == 1){
 scale+=0.1;
//  document.body.style.zoom=scale.toString()+"%";
}
else if (mode == 2){
scale-=0.1;
//  document.body.style.zoom=scale.toString()+"%";
}
var mer = document.getElementById("mermaid");
mer.style.transform= "scale("+scale+","+scale+")";
} 
</script>

Я хочу каким-то образом сохранить значение переменной, чтобы каждый раз, когда я обновляюсь, вызывался DeployGraph, и размер графика изменялся в том же значении масштаба. DeployGraph объявляется в заголовке html, а не в теле. Можно ли это сделать?

Я попытался создать другую переменную в голове и обновлять ее каждый раз, когда изменяется значение масштаба, а затем в DeployGraph я использую element.style.transform= "scale("+scale+","+scale+")"; где element = document.getElementById("русалка"); Однако значение всегда является значением по умолчанию.

Поведение ключевого слова "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
0
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не можете сохранять переменные при обновлении страницы.

Что вам нужно сделать, так это сохранить нужное вам значение в браузере и проверить его после загрузки страницы.

Вы можете сделать это, используя Параметры поиска URL, печенье или локальное хранилище.

При использовании локального хранилища вы можете сделать следующее:

// On document load, after initialising the scale variable
scale = window.localStorage.getItem('scale') || 0.8; // add || 0.8 in case value is undefined

// In toggleZoomScreen
function toggleZoomScreen(mode){
  if (mode == 1){
    scale+=0.1;
  }
  else if (mode == 2){
    scale-=0.1;
  }

  // Update the value in local storage
  window.localStorage.setItem('scale', scale);

  var mer = document.getElementById("mermaid");
  mer.style.transform= "scale("+scale+","+scale+")";
} 

Когда я пробую решение для локального хранилища, я получаю сообщение «Невозможно получить свойство getItem неопределенной или нулевой ссылки». HTML-код не запускается непосредственно в браузере, он используется для отображения графика, созданного русалкой внутри элемента управления программы ERP. Есть мысли по этому поводу?

Peter Andrew 22.03.2022 14:44

Если он не работает в браузере, ни один из подходов не будет работать, но нужная вам концепция останется прежней. Вы можете проверить, предоставляет ли программа erm какой-либо API, похожий на локальное хранилище или файлы cookie.

aside 22.03.2022 16:33

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