У меня есть раскрывающийся список html, который я хочу подключить к линейной диаграмме Google для фильтрации данных. У меня есть прослушиватель событий внутри функции setChartView. Я хочу установить определенные столбцы в зависимости от того, что выбирает пользователь.
В таком случае:
view.columns.push(columnsTable.getValue(4, 1));
view.columns.push(columnsTable.getValue(5, 1));
The problem is, I cannot put these view requests inside my if statements because they are not defined within the scope of the event listener. I can take my if statement out of the event listener and say
if (a.value == 'selectedValue')but then the event listener only takes the default selected value (in this case, 'maint') and does not recognize changed valuea.
Как разместить запросы на просмотр
view.columns.push(columnsTable.getValue(4, 1));
view.columns.push(columnsTable.getValue(5, 1));
внутри моего слушателя? И распознаются ли эти значения setChartView слушателем?
Я пробовал добавить setChartView к параметрам слушателя, вызывая setChartView после объявления функции и ссылаюсь на этот https://www.w3schools.com/jsref/met_document_addeventlistener.asp
Я чувствую, что упускаю что-то очень простое?
function setChartView(linechart, columnsTable, columnFilter) {
var state = columnFilter.getState();
var row;
var view = {
columns: [0]
};
var a = document.getElementById('select');
a.addEventListener('change', function() {
if (this.value = 'maint'){
console.info('maint');
} else if (this.value = 'ru'){
console.info('ru');
} else if (this.value = 'sf'){
console.info('sf');
}
}, false);
view.columns.push(columnsTable.getValue(4, 1));
view.columns.push(columnsTable.getValue(5, 1));
// sort the indices into their original order
view.columns.sort(function (a, b) {
return (a - b);
});
linechart.setView(view);
linechart.draw();
}// end setChartView
для пояснения, вы хотите установить представление диаграммы при изменении выбора и установить столбцы представления на основе значения выбора?
@WhiteHat да, это правильно! В настоящее время он работает, но только если я не включаю слушателя. Но мне нужен слушатель, чтобы пользователь мог выбрать, какие столбцы они хотят видеть.
@TheMaster спасибо, я понял! Это использует google appsscript с gs для бэкэнда и отдельные файлы html и js
так как / когда сейчас вызывается setChartView? вы захотите вызвать setChartView, когда выбор изменится, поэтому вам нужно переместить прослушиватель событий за пределы setChartView ...
Спасибо, я понимаю, что звонил setChartView при загрузке страницы, что имеет смысл, почему при нажатии ничего не происходит



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Пожалуйста, добавьте соответствующие языковые теги. Это веб-приложение, основанное на скрипте приложений Google или на странице html / javascript?