22

私はJavascriptが完璧ではありません.ページを更新せずに、次のtotalという名前の入力ボックスに、qty入力ボックスに入力された値の合計を表示したいです。誰かがそれを理解するのを手伝ってくれますか..?

ここにJavaScriptがあります

 <script type="text/javascript"> 
 var howmanytoadd = 2;
 var rows;

 function calc() {
     var tot = 0;
     for (var i = 0; i < rows.length; i++) {
         var linetot = 0;
         rows[i].getElementsByTagName('input')[howmanytoadd].value = linetot;
         tot += linetot;
     }
     document.getElementById('total').value = tot
 }
 onload = function () {
     rows = document.getElementById('tab').getElementById('qty1');
     for (var i = 0; i < rows.length; i++) {
         rows.getElementsByTagName('input')[i].onkeyup = calc;
     }
 }
</script>

ここに私のhtmlコードがあります:

Qty1 : <input type="text" name="qty1" id="qty"/><br>
Qty2 : <input type="text" name="qty2" id="qty"/><br>
Qty3 : <input type="text" name="qty3" id="qty"/><br>
Qty4 : <input type="text" name="qty4" id="qty"/><br>
Qty5 : <input type="text" name="qty5" id="qty"/><br>
Qty6 : <input type="text" name="qty6" id="qty"/><br>
Qty7 : <input type="text" name="qty7" id="qty"/><br>
Qty8 : <input type="text" name="qty8" id="qty"/><br>
<br><br>
Total : <input type="text" name="total" id="total"/>

ここにスクリーンショットがあります ここにスクリーンショットがあります

4

9 に答える 9

54

試す:

Qty1 : <input onblur="findTotal()" type="text" name="qty" id="qty1"/><br>
Qty2 : <input onblur="findTotal()" type="text" name="qty" id="qty2"/><br>
Qty3 : <input onblur="findTotal()" type="text" name="qty" id="qty3"/><br>
Qty4 : <input onblur="findTotal()" type="text" name="qty" id="qty4"/><br>
Qty5 : <input onblur="findTotal()" type="text" name="qty" id="qty5"/><br>
Qty6 : <input onblur="findTotal()" type="text" name="qty" id="qty6"/><br>
Qty7 : <input onblur="findTotal()" type="text" name="qty" id="qty7"/><br>
Qty8 : <input onblur="findTotal()" type="text" name="qty" id="qty8"/><br>
<br><br>
Total : <input type="text" name="total" id="total"/>


    <script type="text/javascript">
function findTotal(){
    var arr = document.getElementsByName('qty');
    var tot=0;
    for(var i=0;i<arr.length;i++){
        if(parseInt(arr[i].value))
            tot += parseInt(arr[i].value);
    }
    document.getElementById('total').value = tot;
}

    </script>
于 2012-11-24T11:52:19.337 に答える
17

$(document).ready(function(){

		//iterate through each textboxes and add keyup
		//handler to trigger sum event
		$(".txt").each(function() {

			$(this).keyup(function(){
				calculateSum();
			});
		});

	});

	function calculateSum() {

		var sum = 0;
		//iterate through each textboxes and add the values
		$(".txt").each(function() {

			//add only if the value is number
			if(!isNaN(this.value) && this.value.length!=0) {
				sum += parseFloat(this.value);
			}

		});
		//.toFixed() method will roundoff the final sum to 2 decimal places
		$("#sum").html(sum.toFixed(2));
	}
body {
				font-family: sans-serif;
			}
			#summation {
				font-size: 18px;
				font-weight: bold;
				color:#174C68;
			}
			.txt {
				background-color: #FEFFB0;
				font-weight: bold;
				text-align: right;
			}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

<table width="300px" border="1" style="border-collapse:collapse;background-color:#E8DCFF">
	<tr>
		<td width="40px">1</td>
		<td>Butter</td>
		<td><input class="txt" type="text" name="txt"/></td>
	</tr>
	<tr>
		<td>2</td>
		<td>Cheese</td>
		<td><input class="txt" type="text" name="txt"/></td>
	</tr>
	<tr>
		<td>3</td>
		<td>Eggs</td>
		<td><input class="txt" type="text" name="txt"/></td>
	</tr>
	<tr>
		<td>4</td>
		<td>Milk</td>
		<td><input class="txt" type="text" name="txt"/></td>
	</tr>
	<tr>
		<td>5</td>
		<td>Bread</td>
		<td><input class="txt" type="text" name="txt"/></td>
	</tr>
	<tr>
		<td>6</td>
		<td>Soap</td>
		<td><input class="txt" type="text" name="txt"/></td>
	</tr>
	<tr id="summation">
		<td>&nbsp;</td>
		<td align="right">Sum :</td>
		<td align="center"><span id="sum">0</span></td>
	</tr>
</table>

于 2016-06-17T11:15:23.063 に答える
6

Javascript:

window.sumInputs = function() {
    var inputs = document.getElementsByTagName('input'),
        result = document.getElementById('total'),
        sum = 0;            

    for(var i=0; i<inputs.length; i++) {
        var ip = inputs[i];

        if (ip.name && ip.name.indexOf("total") < 0) {
            sum += parseInt(ip.value) || 0;
        }

    }

    result.value = sum;
}​   

HTML:

Qty1 : <input type="text" name="qty1" id="qty"/><br>
Qty2 : <input type="text" name="qty2" id="qty"/><br>
Qty3 : <input type="text" name="qty3" id="qty"/><br>
Qty4 : <input type="text" name="qty4" id="qty"/><br>
Qty5 : <input type="text" name="qty5" id="qty"/><br>
Qty6 : <input type="text" name="qty6" id="qty"/><br
Qty7 : <input type="text" name="qty7" id="qty"/><br>
Qty8 : <input type="text" name="qty8" id="qty"/><br>
<br><br>
Total : <input type="text" name="total" id="total"/>

<a href="javascript:sumInputs()">Sum</a>

例: http://jsfiddle.net/fRd9N/1/

</p>

于 2012-11-24T12:00:56.240 に答える
1

ここに完全なソリューションがあります [100% 動作することをテスト済み]

<div id="FormData">
    Qty1 : <input class="qty" type="text" name="qty" id="qty1" value="" /><br>
    Qty2 : <input class="qty" type="text" name="qty" id="qty2" value="" /><br>
    Qty3 : <input class="qty" type="text" name="qty" id="qty3" value="" /><br>
    Qty4 : <input class="qty" type="text" name="qty" id="qty4" value="" /><br>
    Qty5 : <input class="qty" type="text" name="qty" id="qty5" value="" /><br>
    Qty6 : <input class="qty" type="text" name="qty" id="qty6" value="" /><br>
    Qty7 : <input class="qty" type="text" name="qty" id="qty7" value="" /><br>
    Qty8 : <input class="qty" type="text" name="qty" id="qty8" value="" /><br>
    <br><br>
    Total : <input type="text" name="total" id="total" />
</div>
<script>
    $(function () {
        $("#FormData").on('change, blur', '.qty', function () {
            findTotal();
        })
    });

    function findTotal() {
        var maxD = 0;
        var array = [];
        var total = 0;
        $("#FormData .qty").each(function (key, val) {
            var value = $(this).val();

            if (!isNaN(value) && value.length != 0) {
                total += parseFloat(value);
                array[key] = GetMax(parseFloat(value));
            }
        })

        maxD = Math.max.apply(Math, array);
        if (maxD == -Infinity) {
            maxD = 0;
        }

        if (maxD != -Infinity) {
            $("#total").val(total.toFixed(maxD));
        }
    }
    function GetMax(val) {
        var s = [];
        s = val.toString().split(".");
        if (s.length > 1)
            return s[1].length;
        else
            return 0;
    }
</script>
于 2021-09-12T04:10:24.227 に答える
0

スパン要素を合計する必要があるため、以下の Akhil Sekharan の回答を編集しました。

var arr = document.querySelectorAll('span[id^="score"]');
var total=0;
    for(var i=0;i<arr.length;i++){
        if(parseInt(arr[i].innerHTML))
            total+= parseInt(arr[i].innerHTML);
    }
console.log(total)

他の要素のリンクで要素を変更することができます。編集のガイドが表示されます。

https://www.w3.org/TR/css3-selectors/#attribute-substrings

于 2016-05-13T08:49:35.827 に答える
0

これを試して:

function add() 
{
  var sum = 0;
  var inputs = document.getElementsByTagName("input");
  for(i = 0; i <= inputs.length; i++) 
  {
   if( inputs[i].name == 'qty'+i) 
   {
     sum += parseInt(input[i].value);
   }
  }
  console.log(sum)

}
于 2012-11-24T11:56:50.837 に答える
0

これは、Akhil Sekharan が提供したものを使用した、少し変更を加えた、より単純なソリューションです。

var inputs = document.getElementsByTagName('input');

for (var i = 0; i < inputs.length; i += 1) {
if(parseInt(inputs[i].value)){
        inputs[i].value = '';
       }
    }​​​​
document.getElementById('total').value = total;
于 2018-09-20T11:41:44.050 に答える