如何给 onclick 函数加上单引号?
How to put single quotes to the onclick function?
我的代码在这里
printNextPeriod(新日期(2019-01-01), 新日期(2020-01-01),26);
需要在日期之间加上单引号
期待
printNextPeriod(new Date('2019-01-01'), new Date('2020-01-01'),26);
我需要在哪里修复以下代码中的这个错误?
if (data == 'pestcontrol') {
return ('<button onclick="printNextPeriod(new Date('+row["first_job_dt"]+'), new Date('+row["end_date"]+'),'+row["day_bw_job"]+');" data-jobdays="'+ row["day_bw_job"] +'" data-fjd="'+ row["first_job_dt"] +'" data-actiendcontr="'+ row["end_date"] +'" class="btn btn-success btn-sm actpest" data-target="#viewactipestmodal" data-keyboard="false" data-backdrop="static" data-toggle="modal">View Schedule-P</button>');
}
数据表中的这些代码
{
"data" : "pest_or_clean",
"bSortable": false,
render: function (data, type, row, rowData) {
//console.log(data);
if (data == 'pestcontrol') {
return ('<button onclick="printNextPeriod(new Date('+row["first_job_dt"]+'), new Date('+row["end_date"]+'),'+row["day_bw_job"]+');" data-jobdays="'+ row["day_bw_job"] +'" data-fjd="'+ row["first_job_dt"] +'" data-actiendcontr="'+ row["end_date"] +'" class="btn btn-success btn-sm actpest" data-target="#viewactipestmodal" data-keyboard="false" data-backdrop="static" data-toggle="modal">View Schedule-P</button>');
}
else {
return ('<button data-jobdays="'+ row["day_bw_job"] +'" data-fjd="'+ row["first_job_dt"] +'" data-actiendcontr="'+ row["end_date"] +'" class="btn btn-success btn-sm actclean" data-target="#viewacticleanmodal" data-keyboard="false" data-backdrop="static" data-toggle="modal">View Schedule-C</button>');
}
}
}
使用转义引号。
if (data == 'pestcontrol') {
return ('<button onclick="printNextPeriod(new Date(\''+row["first_job_dt"]+'\'), new Date(\''+row["end_date"]+'\'),'+row["day_bw_job"]+');" data-jobdays="'+ row["day_bw_job"] +'" data-fjd="'+ row["first_job_dt"] +'" data-actiendcontr="'+ row["end_date"] +'" class="btn btn-success btn-sm actpest" data-target="#viewactipestmodal" data-keyboard="false" data-backdrop="static" data-toggle="modal">View Schedule-P</button>');
}
如果使用 ES6 模板字面量,就更简单了。此外,当对象中的 属性 名称是文字时,您可以编写 variable.prop
而不是更冗长的 variable["prop"]
.
if (data == 'pestcontrol') {
return (`<button onclick="printNextPeriod(new Date('${row.first_job_dt}'), new Date('${row.end_date}'),${row.day_bw_job}');" data-jobdays="${row.day_bw_job}" data-fjd="${row.first_job_dt}" data-actiendcontr="${row.end_date}" class="btn btn-success btn-sm actpest" data-target="#viewactipestmodal" data-keyboard="false" data-backdrop="static" data-toggle="modal">View Schedule-P</button>`);
}
使用 Template literals (Template strings) 怎么样?这些真的很好。因为它们被反引号 (``
) 括起来,所以您不会 运行 进入您面临的 single/double 引用问题。
模板文字也可以包含占位符,这些由美元符号和花括号表示 (${expression}
)。
- 不再凌乱
'string' + variable + 'string'
- 相反,您可以这样做
`string ${variable} string`
查看下面的代码片段,我在对象中放入了一些虚构的日期以传递给函数。
当然,唯一需要注意的是,这些是 ES6 规范的一部分,不能与 Internet Explorer 一起使用 https://caniuse.com/#feat=template-literals
如果您必须使用 IE,那么您需要使用反斜杠 (\
) 转义实际上是字符串一部分的单引号,如下所示:
'(new Date(\''+row["first_job_dt"]+'\')'
var row = {
first_job_dt: `2019-01-01`,
end_date: `2019-12-31`,
day_bw_job: `2019-07-07`,
first_job_dt: `2019-05-01`,
}
function test(data) {
if (data == `pestcontrol`) {
return (`<button onclick="printNextPeriod(new Date(${row["first_job_dt"]}), new Date(${row["end_date"]}),${row["day_bw_job"]}');" data-jobdays="${row["day_bw_job"]}" data-fjd="${row["first_job_dt"]}" data-actiendcontr="${row["end_date"]}" class="btn btn-success btn-sm actpest" data-target="#viewactipestmodal" data-keyboard="false" data-backdrop="static" data-toggle="modal">View Schedule-P</button>`);
} else {
return (`<button data-jobdays="${row["day_bw_job"]}" data-fjd="${row["first_job_dt"]}" data-actiendcontr="${row["end_date"]}" class="btn btn-success btn-sm actclean" data-target="#viewacticleanmodal" data-keyboard="false" data-backdrop="static" data-toggle="modal">View Schedule-C</button>`);
}
}
console.log(test(`pestcontrol`));
console.log(test(`otherValue`));
我的代码在这里 printNextPeriod(新日期(2019-01-01), 新日期(2020-01-01),26); 需要在日期之间加上单引号
期待
printNextPeriod(new Date('2019-01-01'), new Date('2020-01-01'),26);
我需要在哪里修复以下代码中的这个错误?
if (data == 'pestcontrol') {
return ('<button onclick="printNextPeriod(new Date('+row["first_job_dt"]+'), new Date('+row["end_date"]+'),'+row["day_bw_job"]+');" data-jobdays="'+ row["day_bw_job"] +'" data-fjd="'+ row["first_job_dt"] +'" data-actiendcontr="'+ row["end_date"] +'" class="btn btn-success btn-sm actpest" data-target="#viewactipestmodal" data-keyboard="false" data-backdrop="static" data-toggle="modal">View Schedule-P</button>');
}
数据表中的这些代码
{
"data" : "pest_or_clean",
"bSortable": false,
render: function (data, type, row, rowData) {
//console.log(data);
if (data == 'pestcontrol') {
return ('<button onclick="printNextPeriod(new Date('+row["first_job_dt"]+'), new Date('+row["end_date"]+'),'+row["day_bw_job"]+');" data-jobdays="'+ row["day_bw_job"] +'" data-fjd="'+ row["first_job_dt"] +'" data-actiendcontr="'+ row["end_date"] +'" class="btn btn-success btn-sm actpest" data-target="#viewactipestmodal" data-keyboard="false" data-backdrop="static" data-toggle="modal">View Schedule-P</button>');
}
else {
return ('<button data-jobdays="'+ row["day_bw_job"] +'" data-fjd="'+ row["first_job_dt"] +'" data-actiendcontr="'+ row["end_date"] +'" class="btn btn-success btn-sm actclean" data-target="#viewacticleanmodal" data-keyboard="false" data-backdrop="static" data-toggle="modal">View Schedule-C</button>');
}
}
}
使用转义引号。
if (data == 'pestcontrol') {
return ('<button onclick="printNextPeriod(new Date(\''+row["first_job_dt"]+'\'), new Date(\''+row["end_date"]+'\'),'+row["day_bw_job"]+');" data-jobdays="'+ row["day_bw_job"] +'" data-fjd="'+ row["first_job_dt"] +'" data-actiendcontr="'+ row["end_date"] +'" class="btn btn-success btn-sm actpest" data-target="#viewactipestmodal" data-keyboard="false" data-backdrop="static" data-toggle="modal">View Schedule-P</button>');
}
如果使用 ES6 模板字面量,就更简单了。此外,当对象中的 属性 名称是文字时,您可以编写 variable.prop
而不是更冗长的 variable["prop"]
.
if (data == 'pestcontrol') {
return (`<button onclick="printNextPeriod(new Date('${row.first_job_dt}'), new Date('${row.end_date}'),${row.day_bw_job}');" data-jobdays="${row.day_bw_job}" data-fjd="${row.first_job_dt}" data-actiendcontr="${row.end_date}" class="btn btn-success btn-sm actpest" data-target="#viewactipestmodal" data-keyboard="false" data-backdrop="static" data-toggle="modal">View Schedule-P</button>`);
}
使用 Template literals (Template strings) 怎么样?这些真的很好。因为它们被反引号 (``
) 括起来,所以您不会 运行 进入您面临的 single/double 引用问题。
模板文字也可以包含占位符,这些由美元符号和花括号表示 (${expression}
)。
- 不再凌乱
'string' + variable + 'string'
- 相反,您可以这样做
`string ${variable} string`
查看下面的代码片段,我在对象中放入了一些虚构的日期以传递给函数。
当然,唯一需要注意的是,这些是 ES6 规范的一部分,不能与 Internet Explorer 一起使用 https://caniuse.com/#feat=template-literals
如果您必须使用 IE,那么您需要使用反斜杠 (\
) 转义实际上是字符串一部分的单引号,如下所示:
'(new Date(\''+row["first_job_dt"]+'\')'
var row = {
first_job_dt: `2019-01-01`,
end_date: `2019-12-31`,
day_bw_job: `2019-07-07`,
first_job_dt: `2019-05-01`,
}
function test(data) {
if (data == `pestcontrol`) {
return (`<button onclick="printNextPeriod(new Date(${row["first_job_dt"]}), new Date(${row["end_date"]}),${row["day_bw_job"]}');" data-jobdays="${row["day_bw_job"]}" data-fjd="${row["first_job_dt"]}" data-actiendcontr="${row["end_date"]}" class="btn btn-success btn-sm actpest" data-target="#viewactipestmodal" data-keyboard="false" data-backdrop="static" data-toggle="modal">View Schedule-P</button>`);
} else {
return (`<button data-jobdays="${row["day_bw_job"]}" data-fjd="${row["first_job_dt"]}" data-actiendcontr="${row["end_date"]}" class="btn btn-success btn-sm actclean" data-target="#viewacticleanmodal" data-keyboard="false" data-backdrop="static" data-toggle="modal">View Schedule-C</button>`);
}
}
console.log(test(`pestcontrol`));
console.log(test(`otherValue`));