JavaScript函数中的参数“this”是什么
我有一个SELECT html元素,它有如下onchange事件: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
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
}