You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在HTML中追加含两个变量的JavaScript函数?字符串参数传递异常

解决JavaScript字符串变量传递到内联onclick的引号问题

我完全懂你碰到的麻烦——你在拼接HTML字符串的时候,字符串类型的value.comment没有被引号包裹,导致生成的onclick代码里它变成了无引号的形式(比如test而不是"test"),浏览器会把它当作一个未定义的变量,自然就触发了错误。

快速修复:给字符串参数添加引号

你只需要在拼接的时候,用转义的双引号把value.comment包裹起来就行,这样生成的HTML里就会正确带上引号:

var url = '{{URL::to('calendar/comments')}}'; 
$.getJSON(url+"/"+data.id, function(data) { 
    ul.append(" <li> <a href='#' onclick='openmodal("+value.id+", \""+value.comment+"\")'> Modifier </a> </li>" ); 
});

这里的\"是转义后的双引号,它会在最终的HTML里渲染成普通的双引号,让value.comment被正确识别为字符串参数。

更推荐的方案:避免内联事件绑定

其实内联onclick这种写法很容易遇到转义、特殊字符的问题,而且代码耦合度高。更优雅的做法是用jQuery的事件绑定来处理:

var url = '{{URL::to('calendar/comments')}}'; 
$.getJSON(url+"/"+data.id, function(data) { 
    // 创建a元素
    var $link = $('<a href="#">Modifier</a>');
    // 绑定点击事件,直接传递变量
    $link.on('click', function() {
        openmodal(value.id, value.comment);
    });
    // 把a元素放入li,再追加到ul
    $('<li></li>').append($link).appendTo(ul);
});

这种方式不需要处理任何字符串拼接和转义,直接在事件回调里使用原始变量,就算value.comment里包含引号、换行这类特殊字符也不会出问题,代码也更易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:23:13