gpt4 book ai didi

javascript - 我怎样才能对内部函数中的变量进行任何更改以影响主变量值

转载 作者:行者123 更新时间:2023-11-30 18:31:09 25 4
gpt4 key购买 nike

我知道 java 脚本没有引用调用。那么我该如何解决呢?

(function($){

$.fn.extend({

something: function(options) {
var Status;
var defaults = {
regex:/^([\u0600-\u06FF]|\s)*$/,
errortxt:"Invalid input",
emptytxt:"It should not be empty"
}
var options = $.extend(defaults, options);
$(this).bind('change', function () {
Status = true;
$(this).each(function() {
/*variables*/
var necessaryElement;
if (options.regex && options.errortxt && options.errorsection)
{
var filter = options.regex;
var $this = $(this);
var wrongMessage = options.errortxt;
var $errordiv = $("[ID$="+options.errorsection+"]");
} else{
console.log("Error : Not enough arguments for invoking something Plugin");
}
if (options.emptytxt)
{
var noMessage = options.emptytxt;
necessaryElement = true;
}
else
{
necessaryElement = false;
}
var elementvalue = $this.val();

/* Methods */
if (elementvalue != "" && necessaryElement) {
if (filter.test(elementvalue)){
$this.removeClass("error").addClass("ok");
$errordiv.fadeOut(300);
} else {
Status = false;
$this.removeClass("ok").addClass("error");
$errordiv.fadeIn(200);
$errordiv.text(wrongMessage);
}
} else if (elementvalue == "" && necessaryElement) {
Status = false;
$this.removeClass("ok").addClass("error");
$errordiv.fadeIn(200);
$errordiv.text(noMessage);
}
});
});
return Status;
}
});
})(jQuery);

我在另一个js中这样调用:

var myarray=new Array();
myarray[0] = $('#selector').something({
regex:/^([\u0600-\u06FF]|\s)*$/,
// another options
});
$('#selector').change(function (){
alert (myarray[0]);
});

但它警告 undefined

如果我将 var Status 更改为 var Status= true 那么它总是提示 true

谁能帮帮我?我如何更改代码以返回所需的 Status

最佳答案

编辑:试图更清楚。

Something() 返回一个由 change 修改的值。因此,当您调用 something 时,您会返回未修改的值。然后调用 change 将更改值,但它不是通过数组中的引用传递的,因此它不会更改任何内容。

您可能想使用 JQuery 对象上可用的 data 函数来保存数据。这是一个简化版本:

(function($){
$.fn.extend({

something: function(options) {

$(this).bind('change', function () {
$(this).data('status','true');
});
}
});
})(jQuery);

$(document).ready(function() {
var myarray=new Array();
myarray[0] = $('#selector').something({
regex:/^([\u0600-\u06FF]|\s)*$/
});
$('#selector').change(function (){
alert ($(this).data('status'));
});
});

关于javascript - 我怎样才能对内部函数中的变量进行任何更改以影响主变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9587516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com