UncaughtReferenceError:在HTMLAnchorElement.onclick中没有定义foo?

时间:2017-04-09 14:18:27

标签: javascript jquery ajax

我正在操纵jquery.Ajax函数中的json数组。语法让我很困惑,所以我无法找到这个错误。我正在做什么我已将click函数绑定到anchor标记,然后当我点击该锚标记并调用foo()函数时,此错误显示为UncaughtReferenceError : foo is not defined at HTMLAnchorElement.onclick

  function show(thelink)
{

    var cat = thelink.innerHTML;
    var productContainer = document.getElementById("productContainer");

    $.ajax({

           type:"POST",
           url:"fetchdata1",
           data:"cat="+cat,

         success:function(data){
            productContainer.innerHTML ="";
            var $productContainer = $('#productContainer');
            $.each(data,function(key,value){
              if(value['newVar'] === 1)
              {
              $productContainer.append("<div id='productBox' class='grid_3'>\n\
             <a href='product.jsp?id="+value['id']+"'><img src='"+value["image"]+"'/></a><br/>\n\
             <a href='product.jsp?id="+value['id']+"'><span class='black'>"+value['name']+"</span></a><br/>\n\
             <span class='black'>By "+value['company']+"</span><br/><span class='red'>RS."+value['price']+"</span>\n\
             <br/><br/><a href='#' onclick='foo(this)' pid='"+value['id']+"'>REMOVE</a></div>");

             }  
             else{

             $productContainer.append("<div id='productBox' class='grid_3'>\n\
             <a href='product.jsp?id="+value['id']+"'><img src='"+value["image"]+"'/></a><br/>\n\
             <a href='product.jsp?id="+value['id']+"'><span class='black'>"+value['name']+"</span></a><br/>\n\
             <span class='black'>By "+value['company']+"</span><br/><span class='red'>RS."+value['price']+"</span></div>"); 
             }
        }) ;

     }      

    });


     function foo(obj){

            var pid = $(obj).attr("pid");
            $(obj).bind("click", function(){

                    $.ajax({

                      type:"POST",
                      url:"removeFromWishlist",
                      data:"pid="+pid,

                      success:function(response){

                      }


                    });



            });

    }  


    return false;
}

1 个答案:

答案 0 :(得分:2)

您的问题是您在foo函数中定义了函数show,因此只能从show范围访问它。

因此,当您在HTML中使用onclick='foo(this)'时,您在foo全局范围内引用window函数,这就是您获得的原因:

  

UncaughtReferenceError:未在HTMLAnchorElement.onclick上定义foo

您需要在foo函数之外移动函数show声明,以便可以从window全局范围访问它。