传递带连字符的字符串将被计算为整数(减法!)js
Passing a string with hyphens gets evaluated as an integer (subtractions!) js
我正试图通过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")
相关文章:
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- 检测个位数整数时正在转换毫秒
- 限制javascript变量的最小/最大整数
- 如何在 Javascript 中将变量的值从字符串转换为整数
- 正则表达式只允许 x 个整数
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 如何在Chartjs中制作整数比例
- 减去两个索引不同但值相同的整数
- 使用jquery从整数中减去
- 在JavaScript中处理天数减法
- 有效地获取两个区间之间的随机整数
- 为什么我的javascript程序没有将其转换为整数而不是字符串
- 带静态字符e输入的文本框数字和带javascript的负整数
- Javascript-当存在's是一个整数标记
- parseInt()方法如何返回整数
- 由于某种原因,JavaScript整数存储为未定义
- Js char数组将字符串整数视为整数
- 如何翻译MySQL查询's ResultSet转换为整数
- 计算阶乘超过了Javascript中的最大整数限制
- 传递带连字符的字符串将被计算为整数(减法!)js