2013-01-23 45 views
0

我在JavaScript/JQuery中的函數不返回任何東西;我希望它爲我返回結果,但它不會。正如你所看到的,回報是在$("#resultado").html("O Valor do produto ficara "+resultado);但這並不會出現,因爲它應該當函數運行:JavaScript/JQuery函數不返回任何東西

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> 
<script type="text/javascript"> 
    $("#target").submit(function(){ 

    var preco_dolar = $("#preco_dolar").val(); 
    var dolar = $("#dolar").val(); 
    var frete = $("#frete").val(); 


    if ($('#drop').is(':checked')) 
    { 
    var drop = 5.8; 
    }else var drop = 0; 


    if(typeof preco_dolar == "undefined"){ 
     alert("Erro ! Falta preco do produto"); 
    } 

    if(typeof frete == "undefined"){ 
     var frete = 40; 
    } 

    if(typeof dolar == "undefined"){ 
     var dolar = 2.16; 
    } 




    var resultado = (preco_dolar*dolar)+frete; 

    $("#resultado").html("O Valor do produto ficara "+resultado); 




}); 
</script> 

有人能指出我要去哪裏錯了,請?

回答

1

首先你需要用你的腳本到

// here $("#target") is nothing 

$(document).ready(function() { 
    // here $("target") exists 
}); 

其次爲你的進步,不要使用

if(typeof dolar == "undefined"){ 
    dolar = 2.16; 
} 

改用

if(!dolar){ 
    dolar = 2.16; 
} 

也就是說,你會做同樣的:

if(!dolar && dolar == 0 && dolar == "" && dolar == false && dolar == undefined){ 
    dolar = 2.16; 
} 

讓0的有效值,使用

if (!dolar && dolar !== 0) { 
    dolar = 2.16; 
} 

也不要使用var dolar = 0;兩次。如果您已經聲明瞭它,只需使用dolar =即可,不覆蓋已聲明的變量。

+0

* 1. *只有在表單呈現在頁面之前,您才需要包裝腳本。 * 2. *如果'dolar'爲零怎麼辦?你只需重置它! typeof檢查不壞,可能會更好,因爲只要'如果(dolar === undefined){' – epascarello

+0

@epascarello是的你是對的,因爲0是一個有效的值。他實際上在他的腳本之前聲明瞭jquery腳本標記,所以可以預見該元素已經不存在了。 – metadings

+0

也許更容易就做'var dolar = $(「#dolar」)。 2.16;'只要val()返回一個字符串。 :) – epascarello

1

您沒有調用表單提交,因此頁面正在刷新並重置頁面。使用preventDefault停止表單提交。

$("#target").submit(function (evt) { 
    evt.preventDefault(); 
    ... 
0

您沒有return聲明。 Javascript函數需要return語句返回值:

function test() { 
    return 5; 
} 
+0

這個問題聽起來像這是OP所指的,但事實並非如此。 – epascarello

1
return false; 

應該足夠了。

或者,你可以阻止默認行爲,通過

e.preventDefault(); 
e.stopPropagation(); 
相關問題