javascript - 无效的 JavaScript 参数

标签 javascript jquery function parameters

所以我有这个按钮,它是在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/

相关文章:

c++ - 递归逆函数

javascript - 停止输入文本中的 html

javascript - 如何在单击按钮时显示实时聊天对话框?

jquery - 视差滚动网站(stellar.js)中对象的不一致定位

javascript - 函数未正确返回

C 编程中验证输入的常规编码

javascript - jQuery 获取/设置输入框值消失

javascript - Mongoose,使用查找选择特定字段

javascript - 使用 html 和 css 创建树

javascript - mvc收获选择多选下拉列表