Javascript 将字符串参数传递给jQuery,它将考虑其函数

Javascript 将字符串参数传递给jQuery,它将考虑其函数,javascript,jquery,Javascript,Jquery,我有一个下面的函数 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 + ",L

我有一个下面的函数

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");
    }
}
但是点击链接后的输出我得到了这个休息,例如:

二十五 15 函数位置(){[本机代码]}


所以我的问题是为什么它认为变量名是函数而不是字符串

addNewLoc是否绑定在单击事件上?这是正常的目的

绑定事件时,第一个参数始终是事件

试试这个:

function addNewLoc(e, long, lat, name) {
    console.log(long);
    console.log(lat);
    console.log(name);
}

因为您正在将
位置
传递给您的函数。它是某些浏览器中的本机构造函数。它不是代码中的字符串。您应该避免使用
onclick
属性。您可以将值存储在
data-*
属性中,使用jQuery为动态生成的元素委派事件,然后使用
.data()
方法读取事件处理程序中的
data-*
属性,如:
$(this.data('location')

function addNewLoc(e, long, lat, name) {
    console.log(long);
    console.log(lat);
    console.log(name);
}