Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 美元内的这个(这个)_Javascript_Jquery_This - Fatal编程技术网

Javascript 美元内的这个(这个)

Javascript 美元内的这个(这个),javascript,jquery,this,Javascript,Jquery,This,我遇到了以下问题: function Conclude (thing){ this.quant = thing.find('#quantity_material').val(); this.thing = thing; this.material =[]; this.finish = []; this.make = function (){ var i=0; t

我遇到了以下问题:

    function Conclude (thing){
        this.quant = thing.find('#quantity_material').val();
        this.thing = thing;
        this.material =[];
        this.finish = [];
        this.make = function (){
            var i=0;
            this.thing.each(function(){
                this.material [i]= $(this).find('#material_val').val();
                //Conclude.material doesn't work either
                i++;
            });
        }
    }
我想分配
consult.material
多个表中输入的值,以便
consult.material[1]
是第一个表中
#material_val
的值,依此类推。问题是当我写这篇文章时,它没有在
.each()中引用函数
consult


我做错了什么?

JS中的每个
函数
语句都有自己的
这个变量。有两个函数,一个叫做
consult
,另一个是匿名函数(实际上有两个匿名函数,但我要解释的东西仍然适用)

您的错误如下:

this.thing.each(function(){
->
this
不属于
consult
函数。它属于匿名函数

至少对您来说,最简单的解决方法是更改匿名函数的范围,以便匿名函数中的
引用外部的
consult
函数。如果您已经在使用
jQuery
,请使用
jQuery.proxy
方法执行此操作

代码:


试试这个,很简单

     function Conclude (thing){
       var _this = this;
       this.quant = thing.find('#quantity_material').val();
       this.thing = thing;
       this.material =[];
       this.finish = [];
       this.make = function (){
        var i=0;
        this.thing.each(function(){
            _this.material [i]= $(this).find('#material_val').val();

            i++;
        });
    }
}

这是什么语言?可能是javascript,使用jquery.javascript和jquery可能重复的@maze le-好吧,这是语言规则之一,我们必须遵守。我同意一开始这是违反直觉的,但经验也会带来肌肉记忆:)代码>美元(这个)。查找(“#material_val”)这里的每个循环中的
都将引用consult对象,因此您需要将示例中的函数args行更改为
this.thing.each($.proxy(function(index,item){
,然后将
$(this)
更改为
$(item)
。(注意:通过添加索引arg,您可以删除
var i=0
i++
并使用
index
arg而不是
i
您可以通过将
this.thing.each(function(){
更改为
this.thing.each(function(index))来改善这一点。){
。使用
索引
而不是
i
,并删除变量和增量
     function Conclude (thing){
       var _this = this;
       this.quant = thing.find('#quantity_material').val();
       this.thing = thing;
       this.material =[];
       this.finish = [];
       this.make = function (){
        var i=0;
        this.thing.each(function(){
            _this.material [i]= $(this).find('#material_val').val();

            i++;
        });
    }
}