JavaScript函数仅执行一次

3
我有一个函数,应该从网站上获取所有的输入,将它们的值乘以它们的数量相加,然后用结果替换 中的字符串。问题在于该函数只执行一次,有时根本不执行。它的代码如下:
function calcTotal() {
    var inputs = document.getElementsByTagName("input");
    var total = 0;

    var priceString = null;
    var e = null;
    var price = null;

    for (var i = 0; i < inputs.length; i++) {
        e = inputs[i].value;
        priceString = "hidden_" + inputs[i].name;
        if (e.match(/[0-9\.]/)) {
            var price = document.getElementById(priceString).innerHTML;
            total = total + parseFloat(e) * parseFloat(price);
        }

    }
    var totalString = document.getElementById("total");
    var stringToDisplay = total.toFixed(2);
    totalString.innerHTML = stringToDisplay.toString();
}

这个函数应该替换掉这个span标签:<span id="total">0.00</span>

每当输入框发生变化时,这个函数会被调用:

<?php foreach($allPremium as $premiumItem){?>
<?php $ceny[$premiumItem->type]=$premiumItem->price;?>
<div class="premium-pack-item">
<?php echo $premiumItem->name;?>
<br />
<?php echo $premiumItem->description;?>
<br />
<?php echo "&euro; ".number_format($premiumItem->price, 2);?>
<br />
<span id="hidden_amount_<?php echo $premiumItem->type;?>" style="display:none"><?php echo $premiumItem->price;?></span>
<input onkeypress="calcTotal()" type="number" size=1 name="amount_<?php echo $premiumItem->type;?>">
</div>
<?php }?>

你能解释一下我哪里出了错吗?


你能否添加一个 jsfiddle 来展示你的问题? - aravind
函数怎么调用? - Sumner Evans
该函数由以下代码调用: <input onkeypress="calcTotal()" type="number" size=1 name="amount_<?php echo $premiumItem->type;?>"> - Paweł Jabłoński
请显示相关的HTML。 - jfriend00
我已经将HTML片段添加到问题中。 - Paweł Jabłoński
显示剩余3条评论
1个回答

0
我会首先检查您是否使用开发者工具获取任何JavaScript错误,这可能会揭示真正的原因。

我不知道为什么你被踩了。当我尝试获取innerHTML时,IE的开发者工具显示了“null”。Firebug和Chrome没有显示这个问题。我犯了一个非常愚蠢的错误,因为我在使用它的3个循环中的2个中将“name”属性放入了span中,而不是“id”。其余的代码都可以正常工作。谢谢大家的帮助! - Paweł Jabłoński

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接