2013-08-24 147 views
-1

我有这个功能,但我有问题。Javascript计算问题

function calc(id) 
{ 
var price = document.getElementById("hidden-output-"+id); 
var amount = document.getElementById("input-"+id); 

if(price.value=="") 
{ 
price.value = 0; 
} 
if(b.value=="") 
{ 
amount.value = 1; 
} 

var total = amount.value * price.value; 
document.getElementById("output-"+id).value=total; 
} 

它不工作,我不知道为什么我是新来的JavaScript。

这是HTML和PHP

<?php 




foreach($category->fetch_category() as $data){ 

    $id = $data->id; 

    echo"<tr>"; 
    echo"<td>"; 
    echo"<center>"; 
    echo"<input type=\"hidden\" value=\"$data->id\" />"; 
    echo"<p><strong>".$data->cat_name."</strong></p>"; 
    echo"</center>"; 
    echo"</td>"; 
    echo"<td>"; 
    echo"<center>"; 


    echo"<select>"; 
    foreach($products->fetch_products($id) as $product) 
    { 
     $price = $product->price; 
    echo"<option value = $product->id onclick=\"UpdateRecord($product->id,$data->id)\">$product->p_name</option>"; 
    } 
    echo"</select>"; 

    echo"</center>"; 
    echo"</td>"; 

    echo"<td>"; 
    echo"<center>"; 
    echo"<input class=\"input-mini\" id=input-$data->id onkeyup=\"calc($data->id)\" type=\"text\" value=\"1\"/>"; 
    echo"<input type=\"hidden\" id=\"$product->id\" value=\"$product->quantity\" />"; 
    echo"</center>"; 
    echo"</td>"; 
    $i = 0; 
    foreach($products->fetch_products($id) as $pricer){ 
    if ($i==1) break;  

    echo"<td>"; 

    echo"<center>"; 
    echo("<div id=\"output-$data->id\" ><p>$pricer->price</p></div>"); 
    echo"<input type=\"hidden\" id=\"hidden-output-$data->id\" value=\"$pricer->price\"/>"; 
    echo"</center>"; 
    echo"</td>"; 
    $i++; 
    } 
    echo"</tr>"; 
} 

?> 

我triyng计算每个场量价*价格,然后总结所有价格栏和显示结果

<td>Total : <input class="span1" type="text" id="total_calc" readonly="true" /></td> 

我也尝试过这些变体:

function calc3(id) { 

    var price = document.getElementById('hidden-output-'+id); 
    var numberField = document.getElementById('input-'+id); 
    numberField.onkeyup = numberField.onpaste = function() { 
     if(this.value.length == 0) { 
     document.getElementById('output-'+id).innerHTML = ''; 
     return; 
     } 
     var number = parseInt(this.value); 
     if(isNaN(number)) return; 
     document.getElementById('output-'+id).innerHTML = number * price; 
    }; 
    numberField.onkeyup(); 
}; 

// This one always return NaN 

这是项目: http://tinypic.com/view.php?pic=34473mp&s=5

+0

选项,不用的onclick,在选择使用的onchange和阅读价值。 – epascarello

+0

这些是两个不同的功能onclick =“UpdateRecord”不calc() –

+0

你在IE中测试过吗? [因此,我上面的评论...](http://stackoverflow.com/questions/9972280/onclick-on-option-tag-not-working-on-ie-and-chrome) – epascarello

回答

1
if(b.value=="") 
{ 
    amount.value = 1; 
} 

什么是你calc功能b.value。这不是defined这就是为什么抛出错误和脚本不执行。

在你的calc3函数中。您需要修改以下行

if(isNaN(number)) return;number = isNaN(number) ? 0 : number

+0

我修正了它没有改变.. 。现在是if(amount.value ==“”) –

+0

我把它改为number = isNaN(number)? 0:数字;相同的NaN –