- 15, May 2024
- #1
Хорошо, мой мозг сегодня не работает, поэтому мне нужна помощь в этом вопросе.
У меня есть страница, на которой я использую CanvasJS для отображения статистики о странице. Это отлично работает.
Тем не менее, я пытаюсь сделать так, чтобы пользователи могли, если захотят, добавить страницу в закладки с параметром URL-адреса, для которой они хотят видеть диаграмму, - что также отлично работает (он обновляет URL-адрес при смене формы).
Однако когда дело доходит до загрузки всего этого через javascript, у меня возникает проблема.
В настоящее время я проверяю, есть ли параметр в URL-адресе, и если да, то устанавливаю соответствующее ему значение переменной.
Это работает.
Однако, поскольку я использую меню выбора пользовательского интерфейса jQuery для стилизации полей выбора, у меня есть функция для получения значений из выбора, которая, поскольку она находится внутри самой функции, ничего не возвращает внешней функции, которая обновляет CanvasJS.
.
На данный момент код такой:
Код (разметка): я нашел одно решение, которое работает, но не соответствует цели (window.location.reload в функции onchange). Я также знаю, что могу дублировать код javascript, но у меня это не работает.
У кого-нибудь есть совет, как это сделать проще всего?
Короткая версия: сделайте так, чтобы ОБА selectmenuonchange И существующий параметр URL запускали функцию для отображения CanvasJS.
Тем не менее, я пытаюсь сделать так, чтобы пользователи могли, если захотят, добавить страницу в закладки с параметром URL-адреса, для которой они хотят видеть диаграмму, - что также отлично работает (он обновляет URL-адрес при смене формы).
Однако когда дело доходит до загрузки всего этого через javascript, у меня возникает проблема.
В настоящее время я проверяю, есть ли параметр в URL-адресе, и если да, то устанавливаю соответствующее ему значение переменной.
Это работает.
Однако, поскольку я использую меню выбора пользовательского интерфейса jQuery для стилизации полей выбора, у меня есть функция для получения значений из выбора, которая, поскольку она находится внутри самой функции, ничего не возвращает внешней функции, которая обновляет CanvasJS.
.
На данный момент код такой:
$(function() {
var selectedMethod = '',
statisticsType = '';
if (GetURLParameter('chart')) {
selectedMethod = GetURLParameter('chart'); // this works
}
$('#method').on('selectmenuchange',function() {
var $this = $(this);
selectedMethod = $('#'+$this.prop('name')+' option:selected').val().toLowerCase();
URL = window.location,
baseURL = URL['href'].split('&');
window.history.pushState('', 'Methodselection '+selectedMethod+'', ''+baseURL[0]+'&chart='+selectedMethod+''); //this also works, however the selectmethod-variable isn't returned to the outer function, naturally
})
if (selectedMethod.length != 0) {
$.post('/get_settings.php',{getsetting:true,settingsvalue:'statistics_type'}, function(data) {
data = $.parseJSON(data);
selectedType = data.returnstatus;
})
$.post('/statistics_processing.php',{chartmethod:selectedMethod}, function(data) {
// in here all the pulling of the canvasjs-content goes, among other things, this is where the "selectedMethod" should be assigned
Код (разметка): я нашел одно решение, которое работает, но не соответствует цели (window.location.reload в функции onchange). Я также знаю, что могу дублировать код javascript, но у меня это не работает.
У кого-нибудь есть совет, как это сделать проще всего?
Короткая версия: сделайте так, чтобы ОБА selectmenuonchange И существующий параметр URL запускали функцию для отображения CanvasJS.