我具有以下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'
如何测试此功能?
答案 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。