我有以下功能
function showPossibleLocationToAdd() {
var ulist = $("<ul data-rok='listview' id='addLocationList'></ul>").appendTo("#addLocation");
for (var i = 0; i < 10; i++) {
console.log("calling" + i*5 + "," + i*3 + ",Location " + i);
var name = "Location " ;
$("<li><a href='#settingsPage' data-role='button' onclick='addNewLoc("+ i*5 + "," + i*3 + "," + name + ")'>Location " + i + "</a></li>").appendTo("#addLocationList");
}
}
应该动态创建一个列表,其中包含应该调用此函数的click事件:
function addNewLoc(long, lat, name) {
console.log(long);
console.log(lat);
console.log(name);
}
但点击链接后的输出我得到了这个回复,例如:
25 15 function Location(){[native code]}
所以我的问题是为什么它认为变量名是一个函数而不是String?
答案 0 :(得分:2)
因为您正在将Location
传递给您的函数。在某些浏览器中哪个是本机构造函数。它不是代码中的字符串。您应该避免使用onclick
属性。您可以将值存储在data-*
属性中,使用jQuery为动态生成的元素委派事件,然后使用data-*
方法读取事件处理程序中的.data()
属性,如:{ {1}}。
答案 1 :(得分:0)
addNewLoc是否在点击事件上绑定?这是正常目的。
绑定事件时,第一个参数始终是事件。
试试这个:
function addNewLoc(e, long, lat, name) {
console.log(long);
console.log(lat);
console.log(name);
}