【问题标题】:How to insert values to an array using input fields?如何使用输入字段将值插入数组?
【发布时间】:2014-12-15 21:10:57
【问题描述】:

我有一个显示两列数据的图表。当页面加载时,我需要为图表中的两个条显示 0。然后我想将控制权交给用户使用两个文本框更改值。 可能使用“keyup”,因此用户不必点击提交按钮。

var barvalues = [0,0];

我打算使用 HTML/CSS 和 JS,JQUERY。只要不是 HTML5,我就可以使用任何图表。用户来自 IE 8、9、10 和 11。我遇到的问题是将输入字段“即时”中的数据绑定到 barvalues 数组。我该怎么做?如何动态更改/修改数组的值,以便每当我从输入框中点击选项卡时图表都会更新?谢谢!!

【问题讨论】:

  • 描述太抽象了。我什至不确定我知道你所说的“图表”是什么意思。请展示一些代码来说明您正在做什么以及您正在尝试做什么。

标签: javascript jquery html input charts


【解决方案1】:

http://jsfiddle.net/r3ou2b9q/5/

HTML:

<div id="bar_graph_wrapper">
    <div id="bar1" class="bars"></div>
    <div id="bar2" class="bars"></div>
</div>

<input type="text" value="0" class="bar_val" id="bar1_val" />
<input type="text" value="0" class="bar_val" id="bar2_val" />

CSS:

#bar_graph_wrapper {
    height:300px;
    position:relative;
    width:100px
}
.bars {
    width:50%;
    height:0;
    float:left;
    position:absolute;
    bottom:0;
}
#bar1 {
    background-color:red
}
#bar2 {
    background-color:blue;
    right:0
}

JQ:

function setValue(b1, b2) {

    var maxValue = 100;

    if (b1 > maxValue) maxValue = b1;
    if (b2 > maxValue) maxValue = b2;

    var perc1 = b1 * 100 / maxValue;
    var perc2 = b2 * 100 / maxValue;

    $('#bar1').animate({
        height: perc1 + "%"
    }, 500)
    $('#bar2').animate({
        height: perc2 + "%"
    }, 500)

}

$('.bar_val').keyup(function () {
    var val1 = ~~$('#bar1_val').val();
    var val2 = ~~$('#bar2_val').val();

    setValue(val1, val2)
});

【讨论】:

    【解决方案2】:

    使用 jQuery 和 JS 图表包 HighCharts 将其放在一起。 只有 2 个输入框绑定到图表中的相应条形。
    您可以通过按向上/向下箭头或仅输入一个值来更改值,图表将“即时”更新

    http://jsfiddle.net/46jad9xk

    HTML

    <script src="http://code.highcharts.com/highcharts.js"></script>
    <script src="http://code.highcharts.com/modules/exporting.js"></script>
    
    <div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
    Changes bar 1 <input type='text' name='series-1' value=10>
    Changes bar 2 <input type='text' name='series-2' value=10>
    

    JS:

    $(function () {
    
    $('input').keyup(function(event) {
    
        var v = parseInt($(this).val(),10);
    
        if(event.which == 38){//arrow up            
            v++
        }
        else if(event.which == 40){//arrow down
            if(v>0)v--
        }
    
        var chart = $('#container').highcharts(),
            series = chart.get($(this).attr('name'));
        $(this).val(v)        
        series.setData([v]);
    })
    
    var chart1 = $('#container').highcharts({
        chart: {
            type: 'column'
        },
        xAxis: {
            categories: [
                'Bars' 
            ]
        },
        yAxis: {
            min: 0,
            title: {
                text: 'User setting'
            }
        },
        series: [{
            id: 'series-1',
            name: 'Series 1',
            data: [10]
    
        }, {
            id: 'series-2',
            name: 'Series 2',
            data: [10]
    
        }]
    });  
    });
    

    【讨论】:

      猜你喜欢
      • 2018-03-12
      • 2018-03-11
      • 2020-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 2017-11-18
      相关资源
      最近更新 更多