You need to enable JavaScript to run this app. 如何向klik函数传递对象而非字符串参数,是否需要闭合单引号?
优惠活动
大模型
产品
解决方案
定价
更多

如何向klik函数传递对象而非字符串参数,是否需要闭合单引号?

问题解答

你的需求完全可以实现,不需要纠结原有代码的单引号闭合问题,核心是原写法逻辑有误。

原代码问题

你通过attr()给onclick赋值字符串内容时,filmidata.arr[i]被双引号包裹,最终点击触发时传入的只会是固定字符串,而非你期望的对象变量。就算去掉双引号,因为字符串是静态拼接的,循环场景下的变量i也无法正确绑定,触发时大概率会拿到循环结束后的最终值,无法对应到你预期的数组元素。

推荐解决方案

优先使用jQuery的事件绑定方法on()绑定点击事件,可以直接传递JS变量,不存在类型转换问题:

var r = $('<input/>').attr({
    type: "button",
    value: "+",
    class: "btn btn-outline-light"
}).on('click', function() {
    // 直接传入对象变量,无需转义引号
    klik(filmidata.arr[i]);
});

如果是在循环中生成元素,记得用let声明循环变量i,或者用闭包锁定每个循环的i值,避免变量提升导致的取值错误。

备选方案(不推荐)

如果你坚持要用attr设置onclick属性,可以把对象序列化后拼接到字符串中,该方案仅支持纯数据对象(不能包含函数、Symbol等不可序列化的内容):

var r = $('<input/>').attr({
    type: "button",
    value: "+",
    class: "btn btn-outline-light"
}).attr('onclick',`klik(${JSON.stringify(filmidata.arr[i])})`)

内容的提问来源于stack exchange,提问作者Jure Kozole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 01:24:04