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');