2013-01-23 116 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(); 
相关问题