Javascript onclick函数错误无法读取未定义的属性“ inv”

时间:2018-08-20 21:24:08

标签: javascript html

我具有以下JavaScript功能:

function myClickEvent(params) {
    var inv = $("#" + params["inv"]);
    inv.on("click", function () {
        $.ajax({
            url: params["route"],
            contentType: "text/json",
            success: function (result) {
                history.pushState(null, null, params["route"]);
                $("#content-wrapper").html(result);
                inv.parent().siblings().removeClass("active");
                inv.parent().addClass("active");
            }
        });
        return false;
    });
}

我这样称呼它为我的html文件:

<button onclick='myClickEvent()'>Click me</button>

显示错误

  

无法读取未定义的属性'inv'

如何测试此功能?

3 个答案:

答案 0 :(得分:2)

params应该是具有inv属性的Javascript对象,您尚未将其作为函数的参数提供。

function myClickEvent(params) {
    var inv = $("#" + params["inv"]);
    inv.on("click", function () {
       console.log(inv+": clicked");
        //$.ajax({
           // url: params["route"],
            //contentType: "text/json",
            //success: function (result) {
               // history.pushState(null, null, params["route"]);
       //         $("#content-wrapper").html(result);
               // inv.parent().siblings().removeClass("active");
     //           inv.parent().addClass("active");
          //  }
      //  });
      //  return false;
    });
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button onclick='myClickEvent({inv: "test"})'>Click me</button>
<p/>
<button id="test">Test</button>

答案 1 :(得分:0)

那是因为您没有向函数传递任何东西,所以可以用这种方式进行测试

<button onclick='myClickEvent("value")'>Click me</button>

然后在函数的第一行中添加console.log(params)

答案 2 :(得分:0)

您需要阅读一个JavaScript教程,您要告诉该按钮在单击不带参数的函数myClickEvent()时执行,并且在定义中您期望的是params param,它不会被自身填充,我会告诉您添加参数,但是您真正需要做的是不使用html中的onClick属性,而是使用button元素中脚本中的addEventListener。