我试图通过onClick ...
将类似“108-17-014”的值传递给函数hyphenatedId = "107-17-14"
dialogBody += " <a href='javascript:void(0);' onClick='class.exampleFunction("+ hyphenatedId +");'>link title</a>";
在class.exampleFunction中,
exampleFunction : function ( hyphenatedId ) {
console.log(hyphenatedId);
}
但是,当我单击链接时,console.log不显示“107-17-14”,而是显示76 ...因为它将连字符解释为减法运算符。
如何防止这种情况发生?欢迎任何其他建议=)
答案 0 :(得分:7)
传递为字符串
dialogBody += " <a href='javascript:void(0);' onClick='class.exampleFunction(\""+ hyphenatedId +"\");'>link title</a>";
答案 1 :(得分:2)
您正在运行时在onClick中动态创建文本,因此您最终获得的内容如下所示:
<a href='javascript:void(0);' onClick='class.exampleFunction(107-17-14);'>link title</a>
然后,您可以看到为什么首先减去这些值 - 在上面的JavaScript中没有任何内容表明它实际上是一个字符串。您需要做的就是将参数包装在引号中:
dialogBody += " <a href='javascript:void(0);' onClick='class.exampleFunction(\""+ hyphenatedId +"\");'>link title</a>";
请注意,您必须转义引号,否则会将其视为字符串构造的终止点。
答案 2 :(得分:2)
如上一张海报所述,如果id =“3-2-1”则:
'f('+id+')'
评估字符串:
'f(3-2-1)'
然后评估为:
f(0)
当你想要的是:
'f("3-2-1")'
应该以:
开头'f("'+id+'")'
评估为:
f("3-2-1")