Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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 jQuery`this`范围问题_Javascript_Jquery_This - Fatal编程技术网

Javascript jQuery`this`范围问题

Javascript jQuery`this`范围问题,javascript,jquery,this,Javascript,Jquery,This,我在一个地方定义了一个全局函数: function addToCart (){ var prodText = $(this).parent().siblings(".item1").text(); $("#"+prodId+"shopC").children(".item1").text(prodText); alert(prodText); } 然后,我想在带有内联onClick事件的HTML元素中调用它: onClick='addToCart()' 它不起作用,但如

我在一个地方定义了一个全局函数:

function addToCart (){
    var prodText = $(this).parent().siblings(".item1").text();
    $("#"+prodId+"shopC").children(".item1").text(prodText);
    alert(prodText);
}
然后,我想在带有内联
onClick
事件的HTML元素中调用它:
onClick='addToCart()
'

它不起作用,但如果我将函数代码直接放在
onClick
事件中,它就起作用了,因此这一定是
这个
范围问题。 关于
这个
范围有很多问题/解释,但我必须承认,对于这个具体案例,我错过了一个简单而直接的答案(我尝试使用
“使用严格”
,但也取得了成功)。
如何实现此功能?

根据当前的实现
不涉及调用函数的元素。它指的是
窗口
对象

您需要将当前元素上下文,即
this
传递给函数作为

onClick='addToCart(this)'
并修改函数以接受元素作为参数

function addToCart (elem){
    var prodText = $(elem).parent().siblings(".item1").text();
    $("#"+prodId+"shopC").children(".item1").text(prodText);
    alert(prodText);
}

基本上,
这个
在普通函数中会指向
窗口
。您必须将
this
上下文传递给内联处理程序
onClick='addToCart(this)
。接收并在事件处理程序中使用它,如下所示

function addToCart (_this){
  var prodText = $(_this).parent().siblings(".item1").text();

必须在内联调用addToCart函数的位置传递该关键字,然后才能捕获该元素

onClick='addToCart(this)'

函数中的此
对象未指向您将
onClick
函数添加到的对象。而是指向
窗口
对象

您需要将此作为参数传递给函数

function addToCart (trigger) { // Code goes here }
然后在
onClick中调用
addToCart(this)


在这里了解有关javascript的更多信息。

以这种方式调用它
onClick='addToCart(this)
并在方法中用从这里传递的参数替换它