我做了一个简单的单位转换器,将像素值转换为相对比率值,然后获取这些比率值并将其设置为一系列框的“ flex-grow”属性的值(在屏幕截图的右上角)。

这是屏幕截图。



现在,这就是我所拥有的。

JS:

$('.calc-btn').click(function(){
    var inputs = [];
    $('.input-box input').each(function(){
        var num = parseFloat($(this).val());
        inputs.push(num);
    });

    var minValue = Math.min.apply(Math,inputs); // get minimum value in array

    //calculation part
    for (i = 0; i < inputs.length; i++) {
        inputs[i] = (inputs[i] / minValue);
        inputs[i] = parseFloat(inputs[i].toFixed(2));
    }

    $('span.input-response').each(function(i){
        $(this).text(inputs[i]);
    });

    //here's where I'm running into trouble
    $('.demo-tile').each(function(i){
        $(this).css('flex-grow',inputs[i]);
    });

    $('.flex-grow-value').each(function(i){
        $(this).text(inputs[i]);
    });
});


问题是,除了将$('。demo-tile')的flex-grow值更改为input [i]的命令以外,click事件中的每个命令都正确执行。使它变得更奇怪的原因是,我可以输入一个数字值,例如“ 10”,而不是输入[i],它将起作用。我还能够使用输入[i]成功设置每个框的文本值。我似乎无法获得flex-grow属性来接受input [i]作为值。

最佳答案

我想到了!

我需要将值转换为字符串,.css()才能接受它。

最终的javascript:

$('.demo-tile').each(function(i){

        $(this).css('flex-grow',inputs[i].toString());

});

09-25 13:49