2014-03-04 123 views
-1

返回undefined这里是我的代码同时调用同样的功能

function secondval_prompt(firstval) { 
    var secondval = prompt("should be greater than 1st value"); 
    if((secondval > firstval) && (secondval != "") && (!isNaN(secondval))) { 
    return secondval; 
    } else { 
    secondval_prompt(firstval); 
    } 
} 

var firstvalue = prompt("Enter 1st value"); 
var secondvalue = secondval_prompt(firstvalue); 
alert(secondvalue); 

如果我的第一次给了second value大于first value其返回second value correctly.Once我给second value为错误的(小于first value)上第一次,并就第二次正确的值(大于first value)交回undefined ...

为什么它对second尝试返回undefined ..

演示链接:http://jsbin.com/balufete/1/edit?js,output

请尝试这样

首先

先给价值100 & 给二值101 它将返回101

先给价值100 & 给二值10 & 再给二值101 它将返回undefined

+2

你的函数似乎缺少一个return语句 – Mathias

回答

4

您需要return从递归函数的值也是如此。

return secondval_prompt(firstval); 

注意,你现在正在做关于在提示符下输入的文本的比较。由于它们各自的字母顺序,"5"将被认为高于"10"。您可能要parseInt两个输入:

if(parseInt(secondval, 10) > parseInt(firstval, 10)) 

你也应该适用firstval,你目前正在向secondval同等法律效力的测试。目前,您的代码将接受firstval的非数字值。

+0

非常感谢你!!!!!!! – rynhe