【问题标题】:javascript - calculate on change of valuesjavascript - 计算值的变化
【发布时间】:2014-01-18 09:28:18
【问题描述】:

在我的 html 文件中,我有 2 个选择框和 4 个输入文本框。

从第一个选择中,您可以选择要使用多少个数字(文本框)。 从第二个选择中,您可以选择数学运算(+、-、*、/) 根据用户在第一次选择时的选择,会出现多个输入框。 现在您将数字添加到这些输入中,并根据您选择的内容和输入中的内容,结果应该出现在特定的 div 中。

然后,当我更改任何内容时,结果应该会更新。

这是我目前所拥有的:

首先选择:

 <select id="quantity" name="qua" onchange="selectQuantity(this.value)">
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
        </select>      

先选择js:

 function selectQuantity(selectedValue){
    var e = document.getElementById("quantity");
    var quantity = e.options[e.selectedIndex].value;

 if ( quantity==='1') {
    $('#nt').fadeIn();
} else if ( quantity==='2') {
    $('#nt').fadeIn();
    $('#nt1').fadeIn();
} else if (  quantity==='3') {
    $('#nt').fadeIn();
    $('#nt1').fadeIn();
    $('#nt2').fadeIn();
} else { 
   $('#nt').fadeIn();
   $('#nt1').fadeIn();
   $('#nt2').fadeIn();
   $('#nt3').fadeIn()
 }
 }

第二次选择html:

 <select id="operation" name="ope" onchange="selectOperation(this.value)">
                <option value="+">+</option>
                <option value="-">-</option>
                <option value="*">*</option>
                <option value="/">/</option>
        </select>   

二选js:

 function selectOperation(selectedValue){
    var e = document.getElementById("operation");
    var operation = e.options[e.selectedIndex].value;
 } 

输入文本示例:

 <input type="text" id="nt"  onchange="checkField(this.value)">

js:

 function checkField(val)
 {

 }

结果div:

 <div id="result"></div>

那么,我应该在哪里以及如何进行计算以实现这个动态更新的结果?要单独的功能? 我所有的 js 函数都在单独的 js 文件中。 谢谢。

-FIDDLEexample

【问题讨论】:

  • 这是一个典型的问题,制作 jsFiddle 会让每个人都更好/更快地帮助你。

标签: javascript jquery html css onchange


【解决方案1】:

这是一个建议:

function calculator() {
    var val1 = parseInt($('#quantity').val());
    var op = $('#operation').val();

    for (var i = 0; i < val1; i++) {
        var incr = i ? i : '';
        $('#nt' + incr).fadeIn();
    }
    var sum = 0;
    function values2() {
        var internalSum = 0;
        $('[id^="nt"').each(function () {
            internalSum += parseInt(this.value == '' ? 0 : this.value);
        });
        return internalSum;
    }

    switch (op) {
        case '+':
            sum = val1 + values2();
            break;
        case '-':
            sum = val1 - values2();
            break;
        case '*':
            sum = val1 * values2();
            break;
        case '/':
            sum = val1 / values2();
            break;
        default:
            console.log('Missing parameters');
    }
    $('#result').html(sum);
}
$('select, input').on('change', calculator);

Demo

【讨论】:

  • 那个console.log语句只是为了调试?
  • @user2886091,在您添加其他输入后刚刚更新了我的答案。请检查演示。关于console.log();,您实际上可以忽略它/删除它。如果操作员输入的值在将触发的开关中未预测到。
  • 我想把那个calculator() 放到一个单独的文件中。请问如何确保它会被执行(除了 )?
  • @user2886091,使用这个版本(在事件处理程序周围添加了一个domready 函数,以便在页面加载时运行):jsfiddle.net/pXhcZ/2
猜你喜欢
  • 1970-01-01
  • 2015-09-07
  • 2014-03-29
  • 1970-01-01
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
相关资源
最近更新 更多