如何在onclick函数中加上单引号?

How to put single quotes to the onclick function?

提问人:numuki sdf 提问时间:8/22/2019 最后编辑:numuki sdf 更新时间:8/22/2019 访问量:415

问:

我的代码在这里 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>');
    }

DataTable 中的这些代码

{
                  "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>');
                  }
                 }
              }
JavaScript jQuery 数据表 报价

评论

2赞 CertainPerformance 8/22/2019
改用,您就不必担心这些烦人的逃生问题addEventListener
0赞 numuki sdf 8/22/2019
@CertainPerformance现在如何解决此问题

答:

1赞 Barmar 8/22/2019 #1

使用转义引号。

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.propvariable["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>`);
}
0赞 Steve 8/22/2019 #2

如何使用模板文字(模板字符串)?这些真的很好。由于它们被 back-ticks() 括起来,因此您不会遇到面临的单/双引号问题。``

模板文字也可以包含占位符,这些占位符由美元符号和大括号 () 表示。${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`));