从if语句运行另一个函数

时间:2013-03-18 18:29:58

标签: javascript function

我有以下两个功能,我试图允许用户输入一年,然后答案将导致答案。但是,如何告诉函数识别字符串,然后如果答案不是MM / DD / YYYY形式,运行函数wholePigLatin?基本上,我如何附加相同的按钮来运行这两个函数取决于什么用户提出。任何帮助将不胜感激。感谢。

function isLeaper() {
            var image1 = document.getElementById('yes');
            var image2 = document.getElementById('no');
            var year = document.getElementById("isLeaper").value;
            var arr = year.split('/');
            var splitYear = arr[arr.length - 1];
            // 1. If the year is divisible by 4, but not 100.
            if ((parseInt(splitYear) % 4) == 0) {
                if (parseInt(splitYear) % 100 == 0) {
                    if (parseInt(splitYear) % 400 != 0) {
                        $('#myDiv').html(image2).fadeIn(500).delay(1000).fadeOut(500);
                        // alert(year + 'is not a leap year. Sorry!');
                        return "false";
                    }
                    if (parseInt(splitYear) % 400 == 0) {
                        $('#myDiv').html(image1).fadeIn(500).delay(1000).fadeOut(500);

                        //alert(splitYear + ' is a leap year. Hooray! ');
                        return "true";
                    }
                }
                if (parseInt(splitYear) % 100 != 0) {
                    $('#myDiv').html(image1).fadeIn(500).delay(1000).fadeOut(500);

                    //alert(splitYear + ' is a leap year. Hooray! ');
                    return "true";
                }
            }
            if ((parseInt(splitYear) % 4) != 0) {
                $('#myDiv').html(image2).fadeIn(500).delay(1000).fadeOut(500);

                //alert(splitYear + ' is not a leap year. Sorry! ');
                return "false";
            }
        }

        if ((parseInt(year) % 4) != 0) {
            $('#myDiv').html(image2).fadeIn(500).delay(1000).fadeOut(500);
            return "false";
        }

我的第二个功能如下:

function wholePigLatin() {
            var thingWeCase = document.getElementById("pigLatin").value;
            thingWeCase = thingWeCase.toLowerCase();
            var newWord = (thingWeCase.charAt(0));

            if (newWord.search(/[aeiou]/) > -1) { 
                alert(thingWeCase + 'way')
            }
            else {
                var newWord2 = thingWeCase.substring(1, thingWeCase.length) + newWord + 'ay';
                alert(newWord2)
            }
        }

这是我的按钮。

        <input type="text" id="isLeaper" value="MM/DD/YYYY">
        <input type="button"  value="Is Leap Year?" onclick="isLeaper();">

2 个答案:

答案 0 :(得分:1)

您可以像调用内置函数(例如parseInt)一样调用自己的函数。您只需在要执行它的位置添加行wholePigLatin();

使按钮运行以下两个函数之一:只需引入一个带有包含布尔逻辑的if语句的函数,并在onClick事件中调用它:

function handleButtonClick() {
    var year = document.getElementById("isLeaper").value;

    if( isFormattedAsDate(year) ) {
        isLeaper();
    } else {
        wholePigLatin();    
    }
}

和HTML:

<input type="text" id="isLeaper" value="MM/DD/YYYY">
<input type="button"  value="Is Leap Year?" onclick="handleButtonClick();">

您仍需要实现isFormattedAsDate函数,以便在格式正确时返回true,否则返回false。

答案 1 :(得分:0)

我想你想要这个:

function isLeaper() {
    var year = document.getElementById("isLeaper").value;
    if ( ! /* year is in DD/MM/YY format */)
        return wholePigLatin();
    // else
    // go on as normal
    // …
}

要检查格式,您可能需要使用正则表达式:/^\d{2}\/\d{2}\/\d{4}$/.test(year),还应该从true返回实际的布尔值,如falseisLeaper功能而不是那些字符串。