javascript - 在 HTML 属性中调用带有字符串参数的函数的正确语法是什么?
问题描述
我有几个在这个 Javascript 方法中生成的按钮,其中一个有 onclick() 处理程序,我需要在其中传递一个字符串作为输入参数。
function ShowButtons() {
let $previewDiv = $("#ServicesPreview");
$previewDiv.html("<button id='myBtn' onclick='CheckID('MYID')'></button>")
}
我无法将字符串括在单引号中,因为它会在网站上生成此字符串,并且出现错误“输入意外结束”:
<button id="myBtn" onclick="CheckID(" MYID')'></button>
我也尝试过不使用引号,也不能使用双引号,因为这会终止传递给 jQuery.html 方法的字符串。这里的正确语法是什么?
解决方案
Freedomn-m 的评论是正确的:您最好使用 JavaScript 设置点击处理程序。我会更像这样:
function ShowButtons() {
let $button = $("<button></button>");
$button.click(() => CheckID("MYID"));
$("#ServicesPreview").empty().append($button);
}
从长远来看,您会发现这种模式为您的代码组件化提供了更多的灵活性。最好避免依赖 HTML ID,因为它们在 DOM 中必须是唯一的,所以它们有点像全局变量。
但是,如果您必须坚持您所询问的模式,则解决引号中引号的方法是转义引号以适应它们所在的上下文。由于您的引号在 HTML 中,您可以使用 HTML 转义:
function ShowButtons() {
let $previewDiv = $("#ServicesPreview");
$previewDiv.html("<button id='myBtn' onclick='CheckID("MYID")'></button>")
}
或者,由于您使用的是 JavaScript,您可以转义 JavaScript 双引号。
function ShowButtons() {
let $previewDiv = $("#ServicesPreview");
$previewDiv.html("<button id='myBtn' onclick='CheckID(\"MYID\")'></button>")
}
或者您可以首先使用反引号,这样双引号就不需要转义。
function ShowButtons() {
let $previewDiv = $("#ServicesPreview");
$previewDiv.html(`<button id='myBtn' onclick='CheckID("MYID")'></button>`)
}
推荐阅读
- javascript - 有什么方法可以使用 isMulti 而不会删除我已经选择的选项?换句话说,有重复/重复选择的选项?
- android - 如何使用firebase函数将从网站抓取的值插入firebase实时数据库?
- python - 熊猫每排下个星期天返回
- mysql - 从第二个表更新查询 maysql
- ios - Firebase 身份验证限制为版本
- android - RxJava2 和 Retrofit2 :预期 BEGIN_ARRAY 但在第 1 行第 2 列路径 $ 处为 BEGIN_OBJECT
- javascript - 如何理解 JavaScript 'Math.floor(Math.random() *6)+1' 中的这个内置函数?
- excel - 如何从标准 Excel 表达式创建 Excel-UDF?
- entity-framework-6 - 合并实体框架迁移乱序
- php - 签名板图像未保存到 /images/ 文件夹中的文件