所以我有这个按钮,它是在java脚本中动态添加的,但问题是想要将文件名作为参数发送给函数,我已经在保存为文件的var中拥有该名称,名称是通常类似于 p164.epub。但由于某种原因它不接受该参数。例如,如果我添加一个数字而不是文件,它会接受它并按预期工作
$('#result2').append("<button class ='removeBtn' onclick ='removeEbook("+file+")'>Remove</button>");
我的功能
function removeEbook(n)
{
alert("yay");
}
有什么想法吗?
最佳答案
您有 jQuery - 不要使用内联事件处理程序:
var file = '...';
$('<button class="removeBtn">').text('Remove').on('click', function() {
// NB: "this" refers to the clicked button
removeEbook(file);
}).appendTo('$#result2');
如果您坚持使用内联事件处理程序(实际上不应该),最佳实践是对 JS 字符串使用单引号,对 HTML 中的属性使用双引号,例如:
$('#result2').append('<button class="removeBtn" onclick="removeEbook(\''+file+'\')">Remove</button>');
请注意,正如所写,这会将处理程序绑定(bind)到处理程序注册时 file
具有的任何值(因为上面的代码将其转换为字符串常量),而不是它在注册时具有的任何值。已触发。
请注意,如果file
碰巧包含任何引号字符(这在某些系统上完全合法),您最终将得到一个非法字符串常量。
以上只是不应使用内联事件处理程序的众多原因中的两个。它们很容易出错(正如您所发现的)。
关于javascript - 无效的 JavaScript 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16695933/