2013-08-24 5 views
-1

이 함수가 있지만 문제가 있습니다.자바 스크립트 계산 문제

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>"; 
} 

?> 

내가 * 가격은 그 다음 나는 또한 시도

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

모든 가격 필드 및 디스플레이 결과를 요약하면 각 필드 양의 가격을 계산하는 triyng하고있다 이러한 변형 :이 프로젝트

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

옵션 라인

if(isNaN(number)) return; 다음 수정해야합니다. – epascarello

+0

이들은 두 가지 다른 함수입니다 onclick = "UpdateRecord"not 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 함수에서. 당신은 온 클릭이 선택에 onchange를 사용하여 값을 읽지 않는 number = isNaN(number) ? 0 : number

+0

나는 그것을 변화시키지 않았다. 지금은 if (amount.value == "") –

+0

number = isNaN (number)로 변경 했습니까? 0 : 숫자; 같은 NaN –