Javascript 从动态图表对象保存文本框值
我一直在尝试保存附加到动态创建的图表对象的文本框的值,但即使使用localStorage,它也不起作用 请原谅代码的混乱,但是如果你添加一个图表,它会在旁边创建一个文本框,但是它不会保存其中的任何内容。Javascript 从动态图表对象保存文本框值,javascript,html,javascript-objects,Javascript,Html,Javascript Objects,我一直在尝试保存附加到动态创建的图表对象的文本框的值,但即使使用localStorage,它也不起作用 请原谅代码的混乱,但是如果你添加一个图表,它会在旁边创建一个文本框,但是它不会保存其中的任何内容。 function createChart(dynamicData = '',number ='',dynamicval= '') { $('#super').append('<div id="bton"><button type="button" class="desi
function createChart(dynamicData = '',number ='',dynamicval= '') {
$('#super').append('<div id="bton"><button type="button" class="design_button" id="chart_'+number+'">✖</button><input id="text'+number+'" type = "textbox"/><div id="settings'+number+'"></div></div>');
var value = document.getElementById("text"+number).value;
localStorage.setItem("input",value);
if(dynamicData == ''){
var storeData = {
'csvURL' : urlInput.value,
'firstRowAsNames' : false,
};
localStorage.setItem('chart_'+number, JSON.stringify(storeData));
}else{
var storeData = dynamicData;
var value = dynamicval;
numbercnt = localStorage.getItem('chart_total');
}
var chartData = {
csvURL: ipaddress + storeData.csvURL + extension,
firstRowAsNames: storeData.firstRowAsNames,
complete: function(csv) {
csv.series[0].data.forEach(function(point, i) {
csv.series[0].data[i] = {
x: point[0],
y: point[1],
customInfo: csv.series[1].data[i][1]
}
})
csv.series.pop()
}
};
Highcharts.chart('settings' + number,{
chart: {
type: 'line'
},
title: {
text: storeData.csvURL + ' Slip'
},
dateTimeLabelFormats: {
millisecond: '%H:%M:%S.%L',
second: '%H:%M:%S',
minute: '%H:%M',
hour: '%H:%M',
day: '%e. %b',
week: '%e. %b',
month: '%b \'%y',
year: '%Y'
},
data: chartData,
series: [{
name: 'Slip'
}],
yAxis: {
plotLines: [{
value: 0,
color: 'black',
width: 2,
zIndex: 1
}]
},
plotOptions: {
series: {
color: 'red',
negativeColor: 'green'
}
},
tooltip: {
pointFormat: '<span style="color:{point.color}">\u25CF</span> {series.name}: <b>{point.y}</b><br/>Last Updated: <b>{point.customInfo}</b>'
}
});
numbercnt++;
localStorage.setItem('chart_total', numbercnt);
}
函数createChart(dynamicata='',number='',dynamicval=''){
$('#super')。追加('✖');
var value=document.getElementById(“文本”+number).value;
setItem(“输入”,值);
如果(动态CDATA==''){
变量存储数据={
“csvURL”:urlInput.value,
“firstRowAsNames”:false,
};
localStorage.setItem('chart_'+number,JSON.stringify(storeData));
}否则{
var storeData=dynamicata;
var值=动态var;
numbercnt=localStorage.getItem('chart_total');
}
var图表数据={
csvURL:ipaddress+storeData.csvURL+扩展名,
firstRowAsNames:storeData.firstRowAsNames,
完成:功能(csv){
csv.series[0].data.forEach(函数(点,i){
csv.series[0]。数据[i]={
x:点[0],
y:第[1]点,
customInfo:csv.series[1].数据[i][1]
}
})
csv.series.pop()
}
};
Highcharts.chart('设置'+编号{
图表:{
类型:“行”
},
标题:{
文本:storeData.csvURL+“Slip”
},
日期时间标签格式:{
毫秒:“%H:%M:%S.%L”,
第二个:“%H:%M:%S”,
分钟:“%H:%M”,
小时:“%H:%M”,
日期:'%e.%b',
周:'%e.%b',
月份:'%b\'%y',
年份:'%Y'
},
数据:图表数据,
系列:[{
姓名:'Slip'
}],
亚克斯:{
绘图线:[{
值:0,
颜色:'黑色',
宽度:2,
zIndex:1
}]
},
打印选项:{
系列:{
颜色:“红色”,
负片颜色:“绿色”
}
},
工具提示:{
pointFormat:“\u25CF{series.name}:{point.y}
上次更新:{point.customInfo}”
}
});
numbercnt++;
localStorage.setItem('chart\u total',numbercnt);
}
上面是创建图表的时间,下面是加载图表的时间
function loadDynamicData(){
var length = localStorage.getItem('chart_total');
for(var i =1;i<=length ;i++){
if(localStorage.getItem('chart_'+i)){
var dynamicData = JSON.parse(localStorage.getItem('chart_'+i));
console.log(dynamicData)
createChart(dynamicData,i);
var dynamicval =localStorage.getItem("input");
console.log(dynamicval)
//if(localStorage.getItem("input") === null){
// return "";
//}
//return localStorage.getItem("input");
}
}
}
loadDynamicData();
});
函数loadDynamicData(){
var length=localStorage.getItem('chart_total');
对于(var i=1;i您在哪里设置文本框的值?当您创建它时,它有空文本,这就是您在localstorage中读取和设置的内容,它将仅为空。(createChart方法中的第1-3行).是的,这似乎是问题所在,我的目的是在创建图表后对其进行设置,并在编辑后对其进行编辑并保存到localstorage。您需要在输入更改事件处理程序中执行此操作。我尝试将事件处理程序放在附加中,但它没有引用函数,而是出现了一个错误,没有引用Don't do't do。在第二行中,您获得元素并在那里分配变更处理程序。