我刚刚使用 timesheet.js 的源代码(参见具体行)并遇到一个小错误,请参阅以下代码行:
'<span style="margin-left: ' + bubble.getStartOffset() + 'px; width: '
+ bubble.getWidth() + 'px; " class="bubble bubble-' + (cur.type || 'default' ) + '"></span>',
当我生成HTML并将其拆分为2行时,一切正常,但如果我执行以下操作。将HTML拆分为3行,如下所示:
'<span style="margin-left: ' + bubble.getStartOffset() + 'px; width: '
+ bubble.getWidth() + 'px; "
class="bubble bubble-' + (cur.type || 'default' ) + '"></span>',
我收到以下错误:
未捕获的SyntaxError:意外的标记ILLEGAL
为什么?为什么当我将代码吐入多行时会发生错误?任何人都能解释一下吗?这将是我唯一的问题。
谢谢。
亚历-Z
答案 0 :(得分:1)
嗯,呃,你把代码拆分在字符串文字的中间。你不能随心所欲地分裂 - 这个语言有规则。就好像你在getStartOffset
的中间将它分开以在一行上获得getS
而在另一行中获得tartOffset
- 这是完全错误的。
原始拆分位于表达式中 - 请注意第二行如何以+
开头,不是在字符串文字中。
正确的拆分是这样的:
'<span style="margin-left: ' + bubble.getStartOffset() + 'px; width: '
+ bubble.getWidth() + 'px; " class="bubble bubble-'
+ (cur.type || 'default' ) + '"></span>',
如果你需要在字符串文字的中间分割,你需要结束它并追加另一个:
'<span style="margin-left: ' + bubble.getStartOffset() + 'px; width: '
+ bubble.getWidth() + 'px; " '
+ 'class="bubble bubble-' + (cur.type || 'default' ) + '"></span>',
答案 1 :(得分:1)
默认情况下,javascript引擎不允许在字符串文字中返回cariage。因此,如果你在第二个例子中添加了一个cariage返回,引擎会在行尾处找到但是找不到字符串char的结尾。
你可以像这样轻松修复你的例子:
'<span style="margin-left: ' + bubble.getStartOffset() + 'px; width: '
+ bubble.getWidth() + 'px; " '
+ 'class="bubble bubble-' + (cur.type || 'default' ) + '"></span>',