如何在javascript中更改下拉框值时获取文本框值

时间:2013-07-05 05:54:11

标签: javascript html

我有  包含表格的表格

  

商品价格数量总计

     

apple 100 2 200

     

橙色200 2 600

     

总计= 600。

项目字段是下拉列表中的下拉列表更改价格将被更改,总价值和格式总计也会更改。我的问题是当选择苹果和橙色时再去苹果更改项目我的总计不会改变。

我的Javascript代码:

function totalprice(element, price) {
    var elementid = element.id;
    var expr = elementid.substring(elementid.indexOf(":") + 1, elementid.length);
    var quantity = document.getElementById("quantity:" + expr).value;
    var price = document.getElementById("price:" + expr).value;
    if (quantity > 0) {
        document.getElementById("total:" + expr).value = (parseInt(quantity)) * (parseInt(price));
        var grandtotal = document.getElementById("total:" + expr).value;
        var gtot = 0;
        var amount = 0;
        for (var i = 0; i <= expr; i++) {
            //document.getElementById("total").value="";
            gtot = document.getElementById("total:" + expr).value;
            amount = parseInt(gtot) + parseInt(amount);
        }
        document.getElementById("total").value = amount;
    }
    return true;
}

我知道错误在for循环只是它很简单,但我不知道如何解决。

4 个答案:

答案 0 :(得分:3)

我使用表行长度得到了这个解决方案,并将该长度用于我的for循环,现在我的代码就像

function totalprice(element,price)

{

var elementid=element.id;
var expr = elementid.substring(elementid.indexOf(":") + 1, elementid.length);
var quantity = document.getElementById("quantity:"+expr).value;

        var price = document.getElementById("price:" + expr).value; 
        if(quantity >0)
        {
        document.getElementById("total:"+ expr ).value= (parseInt(quantity))*(parseInt(price));           
        //var grandtotal =document.getElementById("total:"+expr).value;
        //var grandtotal = document.getElementsByClassName("total"+expr);

        var rowcount = document.getElementById('table').rows.length;

        var grandtotal = 0;
        var finalamount = 0;
            for(var i=1; i<rowcount; i++)
            {
                grandtotal=document.getElementById("total:"+i).value;
                finalamount = parseInt(grandtotal) + parseInt(finalamount);

            }

            document.getElementById("total").value=finalamount;
        }
      return true;

}

答案 1 :(得分:0)

以下是您需要的代码:

<强>使用Javascript:

<script>
function getVal(e){
    // for text
    alert(e.options[e.selectedIndex].innerHTML);
    // for value
    alert(e.options[e.selectedIndex].value);
}
</script>

<强> HTML:

<select name="sel" id="sel" onchange='getVal(this);'>
    <option value="1">Apple</option>
    <option value="2">Banana</option>
    <option value="3">Cat</option>
</select>

答案 2 :(得分:0)

我在for循环中看到两个错误,首先你忘了在你的getElement中使用i,所以你只是多次经历同一个字段,其次,你只是在循环中更新字段(i<=expr)之前的输入,当您实际想要浏览所有“总计”字段以获得总计时,我建议为所有字段提供一个类,然后使用这个循环代码

var total_fields = document.getElementsByClassName('total');
for (var i = 0; i < total_fields.length; i++) {
    gtot = total_fields[i].value;
    amount+= parseInt(gtot);
}
document.getElementById("total").value = amount;

答案 3 :(得分:0)

我认为问题依赖于此:

  

“我的问题是选择苹果和橙色 再次

因为我在您的代码中没有看到您在计算总数时实际更新了elements id

所以...如果你这样做:

gtot = document.getElementById("total:" + expr).value;

首次使用,因为expr var是原始版本,然后,gtot是正确element id
但...
...当您进行第二次更改时,该var现在具有不同的值...并且gtot与您的element id不匹配重新计算新值。 (或者在最坏的情况下,将匹配另一个并更新错误的一个)