Javascript 从JQuery中的匿名函数调用函数返回未定义的

Javascript 从JQuery中的匿名函数调用函数返回未定义的,javascript,jquery,function,scope,Javascript,Jquery,Function,Scope,我正在使用这个脚本,它需要调用外部函数,但日志中返回的值显示为“未定义”。 我有一个成功调用外部函数的复选框,但是匿名jQuery函数没有成功。这可能是某种范围问题吗 谢谢你的帮助 css: javascript: function padZeros(ksa) { getDigits(ksa); //alert(s); //document.getElementById("ksa_padded").value=s } function getDigits(MyDigi

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

谢谢你的帮助

css:

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");
    }
});
函数padzero(ksa){
getDigits(ksa);
//警报;
//document.getElementById(“ksa_padded”).value=s
}
函数getDigits(MyDigits){
var ksa=MyDigits;
变量re4Digit=/^([0-9])([0-9]?)([k | s | a])([0-9])([0-9]?)([a-z]?)$/;
var first2digit=ksa.replace(重设4digit,“$1$2”);
//警报(前2位数字);
//返回前22位数字;
pad(前2位数字,'2');
}
功能板(数量、大小){
//var s=num+“”;
//警报(num);
s=num+“”;
//警报;
而(s.lengthnewText){
$newItem.insertBefore($(this));
插入=真;
返回false;
}
});
如果(插入==false){
$newItem.appendTo(“.row:first”);
}
});
html


3K1
3K3
3K4
1K1
1K2
IS2
IS4
IA2
IA4


试试看


您必须返回内容,否则它们将显示为未定义的

如果您的源代码没有正确缩进,至少在您将其发布到此处之前先运行一遍。谢谢。我已经在getDigits和pad函数中添加了这些,但是我仍然得到了“未定义的”。当我仅测试这些函数时,从onclick事件调用PadZero函数,该值将成功返回。只有当我尝试从匿名函数中调用PadZero时,才会出现“未定义”。@buck1112
.text()
必须是未定义的。尝试记录
$(this)
并查看输出。是的,它是。但是,只有当我调用函数时,它才会变得未定义,如下所示<代码>控制台.log(padZeros($(this.text())@buck1112当您在匿名函数中
padZeros('1k10s')
时,它是否未定义?是的。我尝试直接记录变量,以及
padZeros('1k10s')
,但它们都返回“undefined”。谢谢
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");
    }
});
 <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">
return getDigits(ksa);
return pad(first2Digits,'2');