我正试图通过onClick将类似"108-17-014"的值传递给函数。。。
hyphenatedId = "107-17-14"
dialogBody += " <a href='javascript:void(0);' onClick='class.exampleFunction("+ hyphenatedId +");'>link title</a>";
在类内部,例如Function、
exampleFunction : function ( hyphenatedId ) {
console.log(hyphenatedId);
}
然而,当我点击链接时,console.log并没有显示"107-17-14",而是显示76。。。因为它将连字符解释为减法运算符。
如何防止这种情况发生?欢迎任何其他建议=)
作为字符串通过
dialogBody += " <a href='javascript:void(0);' onClick='class.exampleFunction(""+ hyphenatedId +"");'>link title</a>";
您在运行时动态地在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>";
请注意,您必须转义引号,否则它将把它视为字符串构造的终止点。
如前海报所述,如果id="3-2-1",则:
'f('+id+')'
计算为字符串:
'f(3-2-1)'
然后评估为:
f(0)
当你想要的是:
'f("3-2-1")'
应该以开头
'f("'+id+'")'
评估到:
f("3-2-1")