在JQuery中从匿名函数调用函数返回undefined

时间:2014-02-19 00:08:45

标签: javascript jquery function scope

我正在使用这个需要调用外部函数的脚本,但是日志中返回的值显示为“undefined”。
我有一个成功调用外部函数的复选框,但匿名jQuery函数不成功。这可能是某种范围问题吗?

感谢您的帮助。

的CSS:

div.row {
    border: 1px solid blue;
    width: 100px;
}
div.child {
    border: 1px solid red;
    display: inline-block;
}

的javascript:

function padZeros(ksa) {
    getDigits(ksa);
    //alert(s); 
    //document.getElementById("ksa_padded").value=s
}

function getDigits(MyDigits) {
    var ksa = MyDigits;
    var re4Digit = /^([0-9])([0-9]?)([k|s|a])([0-9])([0-9]?)([A-z]?)$/;
    var first2Digits = ksa.replace(re4Digit, "$1$2");
    //alert(first2Digits);
    //return first2Digits;
    pad(first2Digits, '2');
}

function pad(num, size) {
    //var s = num+"";
    //alert(num);
    s = num + "";
    //alert(s);
    while (s.length < size) s = "0" + s;
    return s;
    //alert(s);

}

$("#add").click(function () {
    var inserted = false;
    var newText = $("#addText").val();
    var $newItem = $("<div class='child'>" + newText + "</div>");
    $(".row:first .child").each(function () {
        //alert($(this).text());
        xx = $(this).text();
        var compare_a = padZeros(xx);
        //alert(compare_a);
        console.log(xx);

        if ($(this).text() > newText) {
            $newItem.insertBefore($(this));
            inserted = true;
            return false;
        }
    });
    if (inserted == false) {
        $newItem.appendTo(".row:first");
    }
});

HTML

 <div class="row">
     <div class="child">3K1</div>
     <div class="child">3K3</div>
     <div class="child">3K4</div>
     <div class="child">1K1</div>
     <div class="child">1K2</div>
 </div>
 <div class="row">
     <div class="child">IS2</div>
     <div class="child">IS4</div>
 </div>
 <div class="row">
     <div class="child">IA2</div>
     <div class="child">IA4</div>
 </div>
 <br/>
 <input id="addText" type="text" />
 <input id="add" type="button" value="Insert Element" />
 <br>

 <input type="checkbox" onClick="padZeros('1k10s')">
 <input type="text" id="ksa_padded">

1 个答案:

答案 0 :(得分:1)

尝试

return getDigits(ksa);
return pad(first2Digits,'2');

你必须退货,否则它们会以undefined形式出现。