#javascript #php #charts #highcharts #gauge
#javascript #php #Диаграммы #высокие диаграммы #датчик
Вопрос:
Я работаю в школьном проекте и получаю данные из файла php для отображения в индикаторе. Я использую этот код javascript для обновления диаграммы каждую секунду:
function requestData() {
$.getJSON('values.php', function(data) {
var new_value = data;
var point = $('#ta').highcharts().series[0].points[0];
point.update(new_value);
setTimeout(requestData, 500)
}
)
}
С помощью этого кода я могу обновить диаграмму, проблема в том, что мне нужно также отобразить числовое значение в другой части диаграммы. Вот что я пытаюсь:
yAxis: {
title: {
text: '<div id="tav">' new_value 'V</div>',
useHTML: true,
y: 80
}
Когда я ставлю «new_value», диаграмма перестает работать, и я ничего не вижу. Если оставить «new_value» в этой части диаграммы, он работает отлично.
Кто-нибудь может мне помочь? Спасибо
Ответ №1:
Чтобы обновить заголовок оси y, вы должны использовать код, подобный:
$('#container').highcharts().yAxis[0].update({
title:{
text:"My text"
}
});
Я создал демонстрационную версию того, как динамически обновлять заголовок оси y при нажатии кнопки: DEMO
Раздел кода JS для динамического обновления заголовка диаграммы при нажатии кнопки:
var chart = $('#container').highcharts();
$('#my_btn').click(function(){
//alert('hey');
chart.yAxis[0].update({
title:{
text:"My text"
}
});
alert('Y-axis title changed to "My text" !');
});
Комментарии:
1. Рад вам помочь ! 🙂
Ответ №2:
Проблема в том, что new_value
определяется локально. Вы могли бы определить переменную как свойство объекта:
var obj = {};
function requestData() {
$.getJSON('values.php', function(data) {
obj.new_value = data;
var point = $('#ta').highcharts().series[0].points[0];
point.update(new_value);
setTimeout(requestData, 500)
}
)
}
и
yAxis: {
title: {
text: '<div id="tav">' obj.new_value 'V</div>',
useHTML: true,
y: 80
}
Комментарии:
1. Я пробовал и не сработало. Точка датчика больше не обновляется, а значение new_value в yAxis отображается неопределенным
2. Когда вы назначаете
yAxis
? Вы слушаете какое-либо событие?3. единственным событием является загрузка, которая вызывает функцию requestData
Ответ №3:
Используйте действительно Axis.setTitle()
метод, см.:
function requestData() {
$.getJSON('values.php', function (data) {
var new_value = data;
var chart = $('#ta').highcharts()
var point = chart.series[0].points[0];
var yAxis = chart.yAxis[0];
yAxis.setTitle({text: new_value });
point.update(new_value);
setTimeout(requestData, 500);
})
}
Комментарии:
1. Когда я устанавливаю yAxis в качестве переменной, диаграмма перестает обновляться и останавливается на нуле. Что я должен записать в yAxis, должен ли я оставить это blanc?
2. Мой плохой, должен быть
yAxis
, неyAXis
😉 Отредактированный ответ. Спасибо!