使用循环时如何添加?

时间:2018-01-11 05:38:17

标签: javascript php html

我创建了一个代码,用于添加输入值并在第三个输入框中显示结果,但结果总是 Nan ,如何解决这个问题?

<?php
    for ($i=0; $i < 5 ; $i++) { 
    ?>
    <input type="number" name="" id="pop<?php echo $i; ?>" >
    <input onKeyup="su<?php echo $i; ?>();" type="number" name="" id="ta<?php echo $i; ?>">
    <input type="number" name="" id="display<?php echo $i; ?>">
    <br>
    <script>
    function su<?php echo $i; ?>(){
        var x = document.getElementById("pop<?php echo $i; ?>");
        var y = document.getElementById("ta<?php echo $i; ?>");
        var sum;
        if (y != ''){
            sum = parseFloat(x + y);
            document.getElementById("display<?php echo $i; ?>").value = parseFloat(x + y);       
        }
    }
    </script>
    <?php
    }
?>

3 个答案:

答案 0 :(得分:1)

您需要从popta获取值并添加这些值,而不是元素本身。 SEE:

function su<?php echo $i; ?>(){
    var x = parseFloat(document.getElementById("pop<?php echo $i; ?>").value); // HERE
    var y = parseFloat(document.getElementById("ta<?php echo $i; ?>").value); // HERE
    var sum;
    if (y != ''){
        sum = parseFloat(x + y);
        document.getElementById("display<?php echo $i; ?>").value = x + y;       
    }
}
</script>

答案 1 :(得分:0)

更改这两行。

在:

var x = document.getElementById("pop<?php echo $i; ?>");
var y = document.getElementById("ta<?php echo $i; ?>");

后:

var x = document.getElementById("pop<?php echo $i; ?>").value;
var y = document.getElementById("ta<?php echo $i; ?>").value;

答案 2 :(得分:0)

无法创建动态功能。

将动态值传递给函数。

<强> PHP

<?php
    for ($i=0; $i < 5 ; $i++) { 
    ?>
    <input type="number" name="" id="pop<?php echo $i; ?>" >
    <input onKeyup="su(<?php echo $i; ?>);" type="number" name="" id="ta<?php echo $i; ?>">
    <input type="number" name="" id="display<?php echo $i; ?>">
    <br />
    <?php
    }
?>

<强>的Javascript

function su(id){
    var x = document.getElementById("pop"+id);
    var y = document.getElementById("ta"+id);
    var sum;
    if (y != ''){
        sum = parseFloat(x + y);
        document.getElementById("display"+id).value = parseFloat(x + y);       
    }
}