javascript - onClick、变量和字符串
问题描述
当用户单击链接时,我试图调用一个函数。
$('#'+fieldId).append('<div class="div-table-td-artists"><a href="#" onclick=addArtistToSpreadsheet("'+similarArtist+'")>'+similarArtist+'</a></div>');
给
未捕获的 SyntaxError:无效或意外的令牌
$('#'+fieldId).append('<div class="div-table-td-artists"><a href="#" onclick=addArtistToSpreadsheet(\""'+similarArtist+'\"")>'+similarArtist+'</a></div>');
给
Uncaught SyntaxError: missing ) 在参数列表之后
我不明白发生了什么事。 similarArtist是一个字符串(我什至尝试将 .toString() 添加到它以确保)。
下面的版本确实有效。
$('#'+fieldId).append('<div class="div-table-td-artists"><a href="#" onclick=addArtistToSpreadsheet("dummy test")>'+similarArtist+'</a></div>');
谢谢你的帮助。
解决方案
您需要转义引号,例如$('#'+fieldId).append('<div class="div-table-td-artists"><a href="#" onclick="addArtistToSpreadsheet(\''+similarArtist+'\')">'+similarArtist+'</a></div>');
或者更好地使用模板文字
const fieldId = 'testid'
let similarArtist = 'Some artist'
let similarArtist2 = 'Some artist2'
// Working example
$('#'+fieldId).append('<div class="div-table-td-artists"><a href="#" onclick="addArtistToSpreadsheet(\''+similarArtist+'\')">'+similarArtist+'</a></div>');
// Better way template literals
$('#'+fieldId).append(
`
<div class="div-table-td-artists">
<a href="#" onclick="addArtistToSpreadsheet('${similarArtist2}')">${similarArtist2}</a>
</div>
`
);
function addArtistToSpreadsheet(artist){
console.log(artist)
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="testid"></div>
推荐阅读
- android - Hilt:为什么 ApplicationComponent 范围内的一个类被创建了两次?
- php - 如何显示与php pdo具有多个一对多和多对多关系的所有记录?
- javascript - Google Apps 脚本 Google Sheets Gmail 处理新电子邮件 追加行数组
- reactjs - TypeError: Object(...) is not a function with useEffect React with latest version
- python - macOS 后台 PyQt 线程执行超时
- android - ScrollView 中的线性视图,阵列适配器在新项目上增长而不是下降
- python - 没有名为“ray.rllib.agents.ppo.ppo_policy”的模块
- javascript - 使用simple-git,只能得到一个提交工作
- python - 无法安装ggplot
- xlsb - 用于保存 Personal.xlsb 副本的宏