Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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函数中的参数“this”是什么_Javascript_Jquery_Html_This - Fatal编程技术网

JavaScript函数中的参数“this”是什么

JavaScript函数中的参数“this”是什么,javascript,jquery,html,this,Javascript,Jquery,Html,This,我有一个SELECT html元素,它有如下onchange事件: onchange="myFunction(this)" 在这种情况下,这是什么样的对象 function myFunction(control){ var jqObject = $(control); ... .. var jqObject2 = jqObject.find('select.mySecondSelect') } 在我的函数中,我得到了另一个带有jQuery jqObject2的对象,它代表另一个select

我有一个SELECT html元素,它有如下onchange事件:

onchange="myFunction(this)"
在这种情况下,这是什么样的对象

function myFunction(control){
var jqObject = $(control);
...
..
var jqObject2 = jqObject.find('select.mySecondSelect')
}
在我的函数中,我得到了另一个带有jQuery jqObject2的对象,它代表另一个select HTML元素,我想将这个对象级联到类似于myFunctionthis的函数中

那么,我如何将jQuery对象转换为JavaScript对象,但像这样转换为参数呢

我在一些帖子中发现,调用jqObject.get0或jqObject[0]是我应该需要的,但是我认为这不是一回事。因为使用get0,我得到的是本机DOM元素,但不是作为对象AFAIK

使现代化 这将是整个场景:

HTML

JS

在JavaScript中,这总是指我们正在使用的函数的“所有者” 执行,或者更确切地说,对函数作为方法的对象执行。 当我们在页面中定义忠实的函数doSomething时,它 owner是页面,或者更确切地说,是的窗口对象或全局对象 JavaScript。不过,onclick属性属于HTML元素 它属于我

通过-


正如@Barmar所提到的,jqObject.get0或jqObject[0]基本上从数组返回第一个对象,jqObject.get1或jqObject[1]返回第二个对象,依此类推。

onXXX属性中的这是DOM元素本身。因此,在本例中,是用户更改的元素$控件创建包含DOM元素的jQuery对象。给定包含元素集合的jQuery对象,可以使用jqObject.getn或jqObject[n]获取集合中的第n个元素。因此,如果jQuery对象中只有一个元素,那么jqObject[0]将返回该元素。

您在这些帖子中找到的内容是正确的

代码onchange=myfunction中的this表示应用该属性的原始html元素


因此,使用jqObject2[0]将指向后续查询的原始html元素。

,感谢您的回答@Barmar,我尝试调用我的函数执行此操作myFunctionjqObject2.get0,但当我进入函数内部时,控制对象应该是作为对象的DOM元素,但它给了我未指定的参数。因此,当我检查jqObject2.get0时,它在Chrome浏览器的控制台上为我提供了HTML元素结构。但是当我触发select element onchange事件时,这将给出相同的元素,但作为“对象”,我认为这是一个JavaScript对象。你知道我遗漏了什么吗?jqObject设置在函数内部,调用函数时不能使用它。好的,很抱歉误解了。我的意思是,想象一下jqObject2将被传递到另一个函数中,就像myFunction现在所做的那样。这不是同一个函数。所以,我的新函数,称之为myFunction2control,内部将具有与myFunctioncontrol相同的捕获,我的意思是var newObject=$control,但控件未指定。我很难理解您。编辑您的问题,并添加您所询问的确切代码。.永不查找未定义的结果。如果没有找到任何匹配项,它将返回一个长度为0的jQuery对象。谢谢您的回答!我已经试过了,在我的函数中得到了一个未指定的参数。请看关于巴尔马评论的问题。我解释了我的行为!
<select name="lstCountry" class="country" onchange="onCountryChange(this)">
  <option value="USA">USA</option>
  <option value="MEXICO">Mexico</option>
</select>

<select name="lstState" class="state" onchange="onStateChange(this)">
....
</select>
function onCountryChange(control){
   var oCountry = $(control);
   var oState = oCountry.closest('tr').find('select.state'); //<== oState is never empty or unspecified. I always get the object correctly.
   //do operations related to the country

   //specific case, call the onStateChange
   onStateChange(oState.get(0));  //<== Here!!
}

function onStateChange(control){
   var oState = $(control); //<== When I call this from the function onCountryChange, control is equals to unspecified. BUT not when the user really perform the onchange on the control state (select Element) manually
   //do operations related to the state
}